【问题标题】:Updating Environment Variables of a Container using Docker使用 Docker 更新容器的环境变量
【发布时间】:2016-11-29 23:24:47
【问题描述】:

我设置了一个带有多个 docker 容器的服务器,可以通过 jwilders nginx reversre proxy 访问。当您运行容器时,您可以设置 VIRTUAL_HOST 环境变量。我一直在想办法在容器启动后更新这些内容。

here 发布的解决方案:

您只需停止 docker daemon 并更改容器配置

/var/lib/docker/containers/[container-id]/config.json

要求您停止 docker 守护进程,但我不希望这样做。

另一个here,使用docker commit来保存实例信息:

话虽如此,您 - 可以 - 将文件系统更改保留在 容器,通过将其作为新图像提交;

$ docker run -it --name=foobar alpine sh
$ docker commit foobar mynewimage
$ docker rm foobar
$ docker run -it --name=foobar mynewimage sh

虽然这对于仅仅改变一个环境变量来说似乎也有点过头了。

我看过docker update,但那主要是为了重新配置容器资源。

当然,如果我别无选择,我会使用上述任何一种方法,但我想知道是否有人找到了其他解决方案?

【问题讨论】:

标签: docker environment-variables


【解决方案1】:

销毁您的容器并使用docker run -e ... 使用新环境变量启动一个新容器。这与在正在运行的进程上更改环境变量相同,您将其停止并使用传入的新值重新启动。将重新启动进程的概念替换为销毁并重新创建新容器。

如果您的容器包含不能丢失的文件,那么您应该使用卷。容器文件系统的其他内容应该是一次性的或不可变的。

【讨论】:

  • 嗯,是的,是的,可以默认重新创建容器,我最终还是这样做了,因为我使用的是卷,但我更好奇是否有办法这样做一种运行补丁?
  • Docker 没有提供在运行容器中修改环境变量的方法,因为操作系统没有提供在运行进程中修改环境变量的方法。您需要销毁并重新创建。
  • @BMitch 这没有意义。您可以停止和启动容器。
  • @Lamp 更新命令不需要重启容器即可生效。如果您更改需要重新启动容器的内容,则工作流程是替换容器。
猜你喜欢
  • 2015-04-27
  • 1970-01-01
  • 1970-01-01
  • 2016-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
相关资源
最近更新 更多