我最近一直在尝试使用Docker构建一些服务来解决这个问题,并且一直在唠叨我的一直是将密码放在Dockerfile中.我是一名开发人员,因此在源代码中存储密码感觉就像一拳.这应该是一个问题吗?关于如何在Dockerfiles中处理密码有什么好的约定吗?
在http://docs.docker.com/engine/reference/builder/#arg中,它建议秘密不通过ARGS传递.
注意:建议不要使用构建时变量来传递github密钥,用户凭据等秘密.
什么时候秘密通过构建时变量传递到危险之中?
我想知道是否有关于如何在一个期间将凭证注入Docker容器的最佳实践docker build.在我的Dockerfile中,我需要获取需要基本身份验证的资源Web服务器,并且我正在考虑如何在不对其进行硬编码的情况下将凭据带入容器的正确方法.
.netrc文件怎么样并使用它curl --netrc ...?但安全呢?我不喜欢将凭据与Dockerfile一起保存在源存储库中.
有没有例如使用参数或环境变量注入凭证的方法?
有任何想法吗?
我使用mysql图像作为示例,但问题是通用的.
用于在docker中启动mysqld的密码在docker ps中不可见,但它在docker inspect中可见:
sudo docker run --name mysql-5.7.7 -e MYSQL_ROOT_PASSWORD=12345 -d mysql:5.7.7
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b98afde2fab7 mysql:5.7.7 "/entrypoint.sh mysq 6 seconds ago Up 5 seconds 3306/tcp mysql-5.7.7
sudo docker inspect b98afde2fab75ca433c46ba504759c4826fa7ffcbe09c44307c0538007499e2a
"Env": [
"MYSQL_ROOT_PASSWORD=12345",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"MYSQL_MAJOR=5.7",
"MYSQL_VERSION=5.7.7-rc"
]
Run Code Online (Sandbox Code Playgroud)
有没有办法隐藏/混淆启动容器时传递的环境参数.或者,是否可以通过引用文件传递敏感参数?