为什么docker有docker卷和容器容器

Man*_*egi 14 mount volumes docker

为什么docker有docker卷和容器容器?它们之间的主要区别是什么.我已经通过docker docs阅读了但是却无法理解它.

Tho*_*rig 23

Docker卷

您可以使用Docker卷在容器中创建新卷并将其装载到主机的文件夹中.例如,您可以将/var/logLinux主机的文件夹挂载到容器中,如下所示:

docker run -d -v /var/log:/opt/my/app/log:rw some/image
Run Code Online (Sandbox Code Playgroud)

这将创建一个/opt/my/app/log在容器内调用的文件夹.此文件夹将/var/log在您的Linux主机上.您可以使用它来持久保存数据或在容器之间共享数据.

Docker卷容器

现在,如果您将主机目录挂载到容器中,则会以某种方式破坏Docker提供的良好隔离.您将使用容器中的数据"污染"主机.为防止这种情况,您可以创建一个专用容器来存储数据.Docker将此容器称为"数据卷容器".

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

docker run -d -v /some/data/to/share --name MyDataContainer some/image
Run Code Online (Sandbox Code Playgroud)

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

docker run -d --volumes-from MyDataContainer some/image
Run Code Online (Sandbox Code Playgroud)

此容器还将看到与上一个命令相同的卷.您可以共享多个容器之间的卷,因为您可以共享主机的已安装文件夹.但它不会用数据污染您的主机 - 所有内容仍然封装在隔离的容器中.

我的资源

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