为什么Docker会有Docker卷和卷容器

14
为什么docker有docker卷和卷容器?它们的主要区别是什么。我已经阅读了docker文档,但并没有很好地理解它。
1个回答

23

Docker卷

您可以使用Docker卷在容器中创建新的卷,并将其挂载到您主机上的文件夹。例如,您可以像这样将Linux主机的文件夹/var/log挂载到容器中:

docker run -d -v /var/log:/opt/my/app/log:rw some/image

这将在您的容器内创建一个名为/opt/my/app/log的文件夹。而这个文件夹会在您的Linux主机上被称为/var/log。您可以使用它来持久化数据或在容器之间共享数据。

Docker卷容器

现在,如果您将主机目录挂载到容器中,就会破坏Docker提供的良好隔离性。您将在主机上"污染"来自容器的数据。为了防止这种情况发生,您可以创建一个专用容器来存储数据。Docker将此容器称为"数据卷容器"。

该容器将具有您想要在容器之间共享的卷,例如:

docker run -d -v /some/data/to/share --name MyDataContainer some/image

这个容器将运行一些应用程序(例如数据库),并有一个名为/some/data/to/share的文件夹。现在,您可以与另一个容器共享此文件夹:

这个容器将运行一些应用程序(例如数据库),并且有一个名为/some/data/to/share的文件夹。现在,您可以将此文件夹共享给另一个容器:

docker run -d --volumes-from MyDataContainer some/image

这个容器将看到与上一个命令中相同的卷。您可以像共享主机上挂载的文件夹一样在许多容器之间共享卷。但它不会用数据污染你的主机 - 一切仍然封装在隔离的容器中。

我的资源

https://docs.docker.com/userguide/dockervolumes/


谢谢Thomas,听起来不错。他们是否使用网络协议在数据卷容器和其他容器之间进行通信?他们是否使用TCP、UDP、Unix套接字或其他类型的通信协议?这是否允许通过网络连接数据卷容器? - Manohar Negi
1
有没有一条简单的Docker命令可以显示现有的卷容器?并且可能还包括数据依赖结构? - B.Mr.W.
卷容器与其他Docker容器基本相同。最好的方法是适当命名卷容器,这样您就可以使用docker ps命令快速了解哪些容器正在用作卷容器了。 - freethebees
当我在你的源代码中使用ctrl+f查找时,发现“数据容器”这个术语并不存在。源代码是否已经更改? - aaaaaa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接