FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
以上 Dockerfile
示例来自docker的官方 Spring 引导指南。我想知道安全属性是用来做什么的,因为我在本地开发环境中运行应用程序时通常不会设置这个属性,但它似乎出现在各种容器化指南中。干杯!
2条答案
按热度按时间nfs0ujit1#
这个安全属性的目的是加速tomcat的启动。默认情况下,用于在unix系统上的jvm中生成随机数的库依赖于
/dev/random
. 在docker容器上没有足够的熵来支持/dev/random
. 看不到足够的熵来支持/dev/random
在boot2docker中运行的docker容器中。随机数生成器用于会话id生成。把它改成/dev/urandom
将使启动过程更快。类似的问题Tomcat7.0.57启动缓慢,因为securerandom
ipakzgxi2#
从Java9到Java11(lts),此选项将增加java.security.securerandom类生成的随机数的熵,同时避免意外阻止代码的风险。它配置jvm:
使用
/dev/urandom
在类unix操作系统上的特殊文件,以避免由于缺少熵而意外阻止代码。使用确定性随机位发生器(drbg)机制
如nist 800-90ar1所述。这些机制实现了与sha-512和aes-256一样强大的现代算法。