为什么docker有docker卷和卷容器?它们的主要区别是什么。我已经阅读了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 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
这个容器将看到与上一个命令中相同的卷。您可以像共享主机上挂载的文件夹一样在许多容器之间共享卷。但它不会用数据污染你的主机 - 一切仍然封装在隔离的容器中。
docker ps
命令快速了解哪些容器正在用作卷容器了。 - freethebees