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

一、需求

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

二、挂载数据卷

数据卷的内容保存在/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

猜你喜欢

转载自blog.csdn.net/u013288190/article/details/108954709