【问题标题】:How to remove configure volumes in docker images如何删除 docker 镜像中的配置卷
【发布时间】:2016-09-20 08:18:54
【问题描述】:

我使用docker run -it -v /xx1 -v /xx2 [image] /bin/bash 创建一个容器。

然后提交镜像并推送到 docker hub。

使用docker inspect [image]

Volumes 的详细信息是

"Volumes": {
            "/xx1": {},
            "/xx2": {}
        },

现在我想删除这张图片中的音量/xx1

我该怎么办?

【问题讨论】:

标签: docker docker-volume


【解决方案1】:

我认为现在使用 Docker 工具是不可能的。您无法从正在运行的容器中删除卷,或者如果您要将映像用作新 Dockerfile 中的基础,则无法删除继承的卷。

您可能可以使用 Jérôme Petazzoni 的 nsenter 工具手动删除容器内的挂载,然后提交。您可以对attach a volume to a running container 使用该方法,但需要进行一些相当低级的黑客攻击。

【讨论】:

    【解决方案2】:

    有一个解决方法,您可以docker save image1 -o archive.tar,编辑元数据 json 文件,然后docker import -i archive.tar。这样,历史记录和所有其他元数据都会被保留。

    为了帮助保存/解包/编辑/加载,我创建了一个小脚本,请查看docker-copyedit。专门针对您的问题,您将执行

    ./docker-copyedit.py from [image] into [image2] remove volume /xx1
    

    【讨论】:

      【解决方案3】:

      删除卷的一种简单方法是导出然后导入容器映像:

      • docker run --name my-container -it [image] /bin/bash
      • docker export my-container > tarball
      • docker import tarball

      【讨论】:

      • 太糟糕了,导出/导入不仅在 99% 的时间里都能神奇地工作。相当于从头开始写一个 Dockerfile。
      猜你喜欢
      • 2022-12-26
      • 2014-02-19
      • 2023-03-21
      • 1970-01-01
      • 2017-11-30
      • 2020-11-04
      • 1970-01-01
      • 2020-11-14
      • 2020-03-23
      相关资源
      最近更新 更多