【问题标题】:delete volumes from images从图像中删除卷
【发布时间】:2017-01-26 23:23:24
【问题描述】:

当我从docker-compose 和一些volumes 创建一个容器然后提交该容器时,docker-compose 文件中的volumes 也将被提交。有没有办法不提交镜像中的卷?

使用以下命令只能添加卷但不能删除它们:

docker commit -c 'VOLUME /foo' container_name image_name

谢谢。

【问题讨论】:

    标签: docker docker-compose docker-volume docker-container


    【解决方案1】:

    更新(2018 年 4 月):在“How can I edit an existing docker image metadata?”中,Guido U. Draheim 提出了gdraheim/docker-copyedit,这是一个可以编辑 docker 图像元数据的 python 脚本。

    这可以删除或覆盖图像元数据,包括卷。

    命令是:

    ./docker-copyedit.py FROM image1 INTO image2 REMOVE ALL VOLUMES
    

    自2018年以来,同一期now includes(来自Aalex Gabi):

    为了使用嵌入式 MySQL 数据库快照构建 CI 映像,我最终使用了以下解决方案:“Persist & share dev data in a Docker image with commit”,来自Steven Landow

    FROM mysql:5.7
    
    ADD snapshots/default.sql /tmp/default.sql
    
    # Using separate data folder outside of mysql image declared volume
    # https://github.com/moby/moby/issues/3465
    # https://medium.com/@stevenlandow/persist-share-dev-mysql-data-in-a-docker-image-with-commit-f9aa9910be0a
    RUN mkdir /var/lib/mysql-no-volume
    
    RUN set -exu ;\
     MYSQL_ROOT_PASSWORD=root docker-entrypoint.sh --datadir /var/lib/mysql-no-volume &\
     MYSQL_PID=$! &&\
     timeout 22 bash -c 'until printf "" 2>>/dev/null >>/dev/tcp/$0/$1; do sleep 1; done' localhost 3306 &&\
     mysql -proot -e 'create database `mydb` collate "utf8mb4_general_ci"' &&\
     mysql -proot mydb < /tmp/default.sql &&\
     kill $MYSQL_PID &&\
     tail --pid=$MYSQL_PID -f /dev/null # Using tail to wait for PID to end https://unix.stackexchange.com/questions/427115/listen-for-exit-of-process-given-pid
    
    # Using separate data folder outside of mysql image declared volume
    # https://github.com/moby/moby/issues/3465
    # https://medium.com/@stevenlandow/persist-share-dev-mysql-data-in-a-docker-image-with-commit-f9aa9910be0a
    CMD ["--datadir", "/var/lib/mysql-no-volume"]
    

    【讨论】:

      【解决方案2】:

      目前看来这是不可能的,尽管有很多人请求该功能并且有人可能正在开发它。这个 Github 问题讨论了这个主题:

      https://github.com/moby/moby/issues/3465

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-31
        • 2011-05-26
        • 2011-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多