【问题标题】:how to remove an ENV setting from a docker image如何从 docker 映像中删除 ENV 设置
【发布时间】:2013-09-23 05:55:07
【问题描述】:

我有一个设置 HOME 和 PATH 的 docker 映像:

[{
  ...
  "config": {
    "HOME=/",
  }
  ...

我知道我可以替换它,但是否可以删除它(并使用正常的 bash 配置文件设置)。我不想破解 shell 配置文件来覆盖它。

【问题讨论】:

  • 请解释一下您为什么要这样做?

标签: docker


【解决方案1】:

我无法让 @creack 为我工作。

在我的情况下,我无意中将一些环境变量提交给了图像,我想将它们从图像中删除。

我最终启动了图像并通过使用没有变量值的-e 选项“取消设置”环境变量,

例如取消设置环境变量 FOO

docker run -it -e FOO IMAGE /bin/bash

然后提交容器

docker commit -m 'removed FOO' CONTAINER_ID IMAGE

【讨论】:

  • 小心:使用不带值的 -e 变量名可以工作,但前提是该变量在您运行 docker 命令的主机环境中不存在。文档声明它旨在传递一个变量:“如果操作员在没有指定值的情况下命名环境变量,则命名变量的当前值将传播到容器的环境中”。因此,对于一个完全通用的答案,您可能应该在第一个 docker 命令之前添加一个unset FOO
【解决方案2】:

您可以简单地执行手动提交。

此操作在 Dockerfile 中不可用,但可以手动完成。

docker inspect <image> 时,您可以检索已用于创建此图像的容器的 ID。

您可以这样做 docker commit <container id> <new image name> 并且所有 ENV 和其他配置都将被刷新。

如果容器已被移除,您可以运行镜像docker run -d <image> <any command,然后提交生成的容器。

如果你想保留一些配置,你可以使用docker commit -run '{}' <container id> <new image name> 语法。更多信息请参见http://docs.docker.io/en/latest/commandline/command/commit/

【讨论】:

    猜你喜欢
    • 2013-07-13
    • 2017-10-27
    • 2017-02-16
    • 2015-09-17
    • 2020-12-26
    • 1970-01-01
    • 2021-01-26
    • 2017-05-03
    • 2016-12-14
    相关资源
    最近更新 更多