我有一个jenkins容器运行,并希望有它的配置隔离在一个容器提交。唯一的问题是,有docker不会提交已安装的卷的变化-所以我必须卸载他们。有没有办法让Docker挂载卷和提交目录的更改?我读到了关于卷绑定的 readonly 选项。这会有帮助吗?
nnsrf1az1#
遗憾的是,这个功能并不具备,它被提出过很多次但都没有被开发者接受,主要原因是可移植性;体积不应该是图像的一部分,而是存储在图像之外。然而,你仍然可以间接地实现同样的事情。1.使用docker commit命令提交容器。1.启动一个新的虚拟容器,该虚拟容器使用您尝试备份的容器中的卷。
docker commit
docker run --volumes-from <container-name> --name backup -it ubuntu bash
1.进入容器后,将装入卷的文件夹设置为tar。1.使用
docker cp backup:<path-to-tar> volume.tar
将卷tar从虚拟容器复制到主机现在您有多种选择:1.使用Dockerfile创建新映像:
FROM commited-container-image COPY volume.tar . RUN tar -xf volume.tar -C path-to-volume-mount-point &&\ rm -f volume.tar
1.或者解压缩卷备份,并将其作为绑定装载装载到从容器提交映像创建的新容器上
1条答案
按热度按时间nnsrf1az1#
遗憾的是,这个功能并不具备,它被提出过很多次但都没有被开发者接受,主要原因是可移植性;体积不应该是图像的一部分,而是存储在图像之外。
然而,你仍然可以间接地实现同样的事情。
1.使用
docker commit
命令提交容器。1.启动一个新的虚拟容器,该虚拟容器使用您尝试备份的容器中的卷。
1.进入容器后,将装入卷的文件夹设置为tar。
1.使用
将卷tar从虚拟容器复制到主机
现在您有多种选择:
1.使用Dockerfile创建新映像:
1.或者解压缩卷备份,并将其作为绑定装载装载到从容器提交映像创建的新容器上