为什么docker有docker卷和volume容器?他们之间的主要区别是什么。我已经通过docker docs阅读了但是无法理解它。
答案 0 :(得分:23)
您可以使用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 run -d -v /some/data/to/share --name MyDataContainer some/image
此容器将运行某个应用程序(例如数据库)并具有名为/some/data/to/share
的文件夹。您现在可以与另一个容器共享此文件夹:
docker run -d --volumes-from MyDataContainer some/image
此容器还将显示与上一个命令相同的卷。您可以共享多个容器之间的卷,因为您可以共享主机的已安装文件夹。但它不会用数据污染您的主机 - 所有内容仍然封装在隔离的容器中。