关于Docker:在Dockerfile中更改Java” SecureRandom”

Change Java “SecureRandom” in Dockerfile

我正在用jre8使用tomcat的docker镜像,
我必须在java环境中更改一个选项,可以在容器运行后执行此操作,将其ssh更改为

securerandom.source=file:/dev/random

securerandom.source=file:/dev/urandom

内部

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

但是,我想在容器启动之前自动执行此操作,因为当前设置需要很多时间才能启动tomcat。


有两种类型的更改。

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

    通常,您将基于使用的原始Dockerfile创建一个新的Dockerfile,然后在此处进行更改。您可以像这样使用JAVA_OPTSCATALINA_OPTS

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

    这将使用docker run完成。只需传递-e CATALINA_OPTS="-Dsecurerandom.source=file:/dev/urandom"。类似于:

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

    您还可以创建一个新图像并仅进行最初的更改(尽管我真的不喜欢在不需要时更改图像中的文件)。

    1
    2
    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