【问题标题】:why does docker have docker volumes and volume containers为什么 docker 有 docker 卷和卷容器
【发布时间】:2014-08-08 23:13:39
【问题描述】:

为什么 docker 有 docker 卷和卷容器?它们之间的主要区别是什么。我已经阅读了 docker 文档,但并不能很好地理解它。

【问题讨论】:

    标签: docker mount volumes


    【解决方案1】:

    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 的文件夹。您现在可以与另一个容器共享此文件夹:

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

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

    我的资源

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

    【讨论】:

    • 谢谢托马斯,听起来不错。他们是否使用网络协议在数据卷容器和另一个容器之间进行通信?他们是在使用 TCP、UDP、Unix 套接字还是其他类型的操作系统通信协议?这是否允许通过网络附加数据卷容器?
    • 是否有一个简单的 docker 命令来显示现有的卷容器?可能还有数据依赖结构?
    • 卷容器与其他 Docker 容器非常相似。判断哪些容器被用作卷容器的最佳方法是适当地命名它们。然后您可以使用docker ps 命令快速分辨出哪些是卷容器。
    猜你喜欢
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    相关资源
    最近更新 更多