Docker教程小白实操入门(18)--如何挂载和共享数据卷

    科技2024-11-14  15

    一、需求

    容器和本地主机之间如何挂载和共享数据卷

     

    二、挂载数据卷

    数据卷的内容保存在/var/lib/docker/volume/数据卷名/_data/中,数据卷的内容会和容器的挂载点始终保持一致。

    “数据卷名”可以用户指定,如果不指定,就会随机生成一个“数据卷名”。

     

    三、挂载宿主机目录

    # 将宿主机的/host/dir挂载到了容器的/container/dir目录 docker run --name vocotainer1 -v /host/dir:/container/dir ubuntu

    宿主机的目录和容器的目录必须使用绝对路径。

    如果宿主机不存在/host/dir目录,则会创建一个空文件夹。

    在/host/dir下的所有文件和文件夹都可以在容器中在/container/dir下被访问。

    如果镜像中本来就存在/container/dir文件夹,那么该文件夹下所有内容都会被删除,保证与宿主机中文件夹一致。

     

    三、同时创建多个数据卷

    # 创建了两个数据卷 docker run --name vocotainer2 -v co2vo1:/data -v co21vo2:/dir1 ubuntu

    同理一次指定多个宿主机的目录挂载到容器中也是可行的。

     

    四、与其他容器共享数据卷(--volumes-from)

    # 创建了一个名为vocotainer3的容器,并与vocontainer1共享数据卷。 # 因为vocontainer1的挂载点在/container/dir上,所以如果vocotainer3的挂载点也将会是/container/dir docker run --name vocotainer3 -- volumes-from vocontainer1 ubuntu

    通常如果有一些文件如果需要被多个容器共享,一种常见的做法就是创建一个数据容器(该容器仅仅用来共享数据而不做其他用途),其他容器与之共享数据卷

     

    五、实例

    #1.创建一个名为container1的容器,并将本地主机的/dir1目录挂载到容器中的/codir1中。 #********** Begin *********# docker pull busybox docker run --name container1 -v /dir1:/codir1 busybox #********** End **********# #2.创建一个名为container2的容器,与container1共享数据卷。 #********** Begin *********# docker run --name container2 --volumes-from container1 busybox #********** End **********#

    我们可以看到/var/lib/docker/volumes/下什么也没有,但是在主机下新建了/dir1/文件夹

     

    参考:https://www.educoder.net/shixuns/pebvjtk9/challenges

    软件工程小施同学 认证博客专家 学堂在线讲师 每一个伟大,都源于一个勇敢的开始(微博:“软件工程小施同学”,公号”微程序学堂“)
    Processed: 0.015, SQL: 8