是否将未绑定的泊坞窗容器卷中的数据提交给图像?

例如, 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文档以获取更多详细信息。