更改Java“;“安全随机”;在Dockerfile中

更改Java“;“安全随机”;在Dockerfile中,java,docker,tomcat7,dockerfile,Java,Docker,Tomcat7,Dockerfile,我将tomcat的docker映像与jre8一起使用, 我必须在java环境中更改一个选项,可以在容器运行后对其进行ssh更改 securerandom.source=文件:/dev/random 到 securerandom.source=文件:/dev/uradom 里面 root@112ecdd0b71f:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/java.security 但是,我希望在容器启动之前自动打开它,因为当前设置需要花

我将tomcat的docker映像与jre8一起使用, 我必须在java环境中更改一个选项,可以在容器运行后对其进行ssh更改

securerandom.source=文件:/dev/random

securerandom.source=文件:/dev/uradom

里面

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


但是,我希望在容器启动之前自动打开它,因为当前设置需要花费大量时间才能启动tomcat。

对于此类更改,有两个选项

  • 创建新映像并重写JVM系统属性

    通常,您会在使用的原始文件的基础上创建一个新的
    Dockerfile
    ,并在那里进行更改。您可以使用
    JAVA\u OPTS
    CATALINA\u OPTS
    如下:

    FROM tomcat:8-jre8
    ENV CATALINA_OPTS -Dsecurerandom.source=file:/dev/urandom
    
  • 在运行时在现有映像中设置JVM系统属性

    这将使用
    docker run
    完成。只需传递
    -e CATALINA_OPTS=“-Dsecurerandom.source=文件:/dev/uradom”
    。比如:

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

    你也可以创建一个新的图像,只做你最初所做的更改(不过,我并不喜欢在图像中的文件不需要更改的时候进行更改)


  • 这类更改有两种选择

  • 创建新映像并重写JVM系统属性

    通常,您会在使用的原始文件的基础上创建一个新的
    Dockerfile
    ,并在那里进行更改。您可以使用
    JAVA\u OPTS
    CATALINA\u OPTS
    如下:

    FROM tomcat:8-jre8
    ENV CATALINA_OPTS -Dsecurerandom.source=file:/dev/urandom
    
  • 在运行时在现有映像中设置JVM系统属性

    这将使用
    docker run
    完成。只需传递
    -e CATALINA_OPTS=“-Dsecurerandom.source=文件:/dev/uradom”
    。比如:

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

    你也可以创建一个新的图像,只做你最初所做的更改(不过,我并不喜欢在图像中的文件不需要更改的时候进行更改)


  • 启动缓慢可能是由于缺乏熵造成的。您可能希望将实际主机/dev/random装载到映像中。检查这个答案。启动缓慢可能是由于缺少熵造成的。您可能希望将实际主机/dev/random装载到映像中。请检查此项,以便回答。