环境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_USERADMIN_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给入口点脚本。