2017-04-10 92 views
0

我正在使用jre8的tomcat的docker镜像, 我必须更改java环境中的选项,可以在容器运行后对其执行ssh并更改在Dockerfile中更改Java“SecureRandom”

securerandom.source =文件是:/ dev /随机

securerandom.source =文件是:/ dev/urandom的

根@ 112ecdd0b71f:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/java.security

不过,我想在容器启动之前自动执行它,因为当前的设置需要大量的时间来启动tomcat。

+1

的启动速度慢可能是由缺乏熵引起的。您可能想要将实际的主机/ dev/random安装到您的映像中。检查这个SO回答http://stackoverflow.com/a/26024403/4990550。 –

回答

1

这种变化有两种选择。

  1. 创建一个新映像并覆盖JVM系统属性。

    您通常会根据您使用的原始设备创建一个新的Dockerfile并在此处进行更改。现有的图像中

    FROM tomcat:8-jre8 
    ENV CATALINA_OPTS -Dsecurerandom.source=file:/dev/urandom 
    
  2. 设置JVM系统属性在运行时:你可以使用JAVA_OPTSCATALINA_OPTS等。

    这将使用docker run完成。只需通过-e CATALINA_OPTS="-Dsecurerandom.source=file:/dev/urandom"即可。例如:

    docker run -e CATALINA_OPTS="-Dsecurerandom.source=file:/dev/urandom" tomcat:8-jre8 
    
  3. 创建一个新的图像并更改文件(不推荐)。

    你也可以创建一个新的图像,只是做出你最初制作的变化(尽管如此,当他们不需要的时候,我并不喜欢在图像中更改文件)。

    FROM tomcat:8-jre8 
    RUN sed -i 's/file:\/dev\/random/file:\/dev\/urandom/' /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/java.security