环境variables传递给docker运行
我有一个部分准备工作的docker图像。 要充分发挥作用,我必须运行
sudo docker run -d -p 80 --name myimage -e ADMIN_USER="user1" -e ADMIN_PASSWORD='password1' leonixyz/myimage:1.0
第一次执行图像我的代码configuration里面的应用程序。
这是很方便的,因为每次我需要一个新的应用程序实例,必须为每个不同的用户configuration一个新的实例时,我可以将不同的环境variables传递给docker run
,我的代码将专门为新用户configuration容器。
不幸的是,我看到这些variables不能从容器中删除。
如果我做:
sudo docker exec -it <container_id> bash
那么我可以看到variablesADMIN_USER
和ADMIN_USER
(显然)仍然存在。
我尝试在我的一次性configuration代码的末尾unset ADMIN_PASSWORD
,但不起作用。
在正在运行的容器中运行未unset ADMIN_PASSWORD
也不能运行。
有没有办法从容器中删除一个环境variables,一旦启动?
谢谢
编辑指出最好是不通过环境variables传递秘密,一个很好的解决方法在这里解释https://github.com/docker/docker/issues/13490#issuecomment-162125128
“取消”拥有凭据的环境variables的唯一合理的方法是不要把它们放在首位。 一般来说,不要将环境variables用作凭证或“秘密”。
以下提供了一个很好的总结: https : //github.com/docker/docker/issues/13490 。
那么相反的方法呢? 而不是在运行时传递环境variables,你可以设置你的入口点是这样的:
ENTRYPOINT export ADMIN_USER="user1" \ && export ADMIN_PASSWORD='password1' \ && entrypoint.sh
另一种方法是将所需的variables作为实际parameter passing给入口点脚本。