是否将未绑定的泊坞窗容器卷中的数据提交给图像?
例如, postgres
映像在/var/lib/postgresl/data
有一个卷,但没有绑定到特定的主机path。 我想知道如果在这个容器中完成的数据库工作是完全封装的提交容器的图像,或者如果我需要单独传递未绑定的卷的内容。
命令中的示例
基于postgres
映像创build容器vtest
:
$ docker run -d --name vtest postgres
容器在/var/lib/postgresql/data
上具有未绑定到主机path的卷:
$ docker inspect -f '{{ .Volumes }}' vtest map[/var/lib/postgresql/data:/var/lib/docker/vfs/dir/bc39da05ff1cd044d7a17bba61381e854a948fb70cf39f897247f5ada66ad906] $ sudo docker inspect -f '{{ .HostConfig.Binds }}' vtest <no value>
创build一个数据库并在vtest
容器中添加一些logging。 然后,将这些更改提交给一个图像以便与其他人共享:
$ docker commit -p vtest postgres:vtest
在vtest
容器的/var/lib/postgresql/data
所做的更改是否会保留在这个新的postgres:vtest
图像中?
安装在容器中的卷不会被提交到映像,不pipe它被挂载到主机的特定文件夹,还是挂载到/var/lib/docker
的文件夹。 实际上,正如您在消息中显示的那样,卷在主机中挂载到/var/lib/docker/vfs/dir/bc39da05ff1cd044d7a17bba61381e854a948fb70cf39f897247f5ada66ad906
。 您可以以root用户身份浏览该文件夹。
如果要将数据保存在卷中,则需要使用与提交不同的其他方法。 其中一个比较常用的方法是使用数据容器(这将在/var/lib/container/...
为数据创build一个文件夹),然后使用一个新的容器和tar
等打包工具保存该容器。 检查与此主题相关的Docker文档以获取更多详细信息。