6、Docker存储卷

Why Data Volumes?  来自马哥教育

Data volumes

Volume types 

绑定挂载卷:在宿主机和容器上各指明绑定路径才能进行绑定。

docker管理卷:在容器内指定挂载点,而被挂载点即宿主机上的挂载路径不需要用户创建,而是由docker daemon维护

 

在容器中使用Volumes(即使用docker管理卷)

-v /data  路径默认不存在

查看/data属于哪个路径?

# docker inspect b1

那么在容器b1的data目录下是可以看到此文件的

同时在容器内的data目录下操作,比如新建文件等在宿主机也是可以看到的。

以上就是有docker管理的卷

另外一种类型:绑定挂载卷

删除之前的镜像,重新启动

# docker run --name b1 -it --rm -v /data/volumes/b1:/data busybox      //  -v /data/volumes指定宿主机路径,把这个路径关联到b1上的data目录下 

注意,即使在宿主机上/data/volumes/b1这个目录之前不存在,在挂载的那一刻也被在宿主机上创建的,但必须明确指定这个路径,

其他都与docker管理卷相似,在容器创建文件在宿主机上可以看到,相反亦可以。

以上两种存储都具有持久能力,例如:

[root@node1 ~]# cd /data/volumes/b1/
[root@node1 b1]# vim index.html   //在宿主机上的/data/volumes/data目录下创建一个网页文件

虽然上述容器b1退出并删除,但是之前创建的index.html仍然是存在的。

下次在启动容器b1时,仍然把宿主上的挂载目录指定为之前创建的目录/data/valumes/data,则仍然可以看到,注意,一定要和之前的容器相同。

因此就有了持久功能。

 

多个容器共享宿主机同一个存储卷

一个docker的目录能够与宿主机的目录建立关联关系,那么两个docker容器的目录就可以关联到宿主机的同一个目录上,这样就可以实现共享存储卷了。

 

上述演示了两个容器共享一个宿主机存储卷,但是b2必须使用 -v /data/volumes/b1:/data 指定b1的目录,可以在初始化容器b2时采用直接复制b1的存储卷路径

可以创建一个容器,这个容器可以不启动,只要存在就行,这个容器作为其他生产容器的基础架构容器。在启动其他生产容器时,直接复制基础架构容器的存储设置即可。

使用场景

 

Sharing volumes

# docker run --name infracon -it -v /data/infracon/volume/:/data/web/html busybox  //创建一个基础服务的容器,可以不启动,这里使用交互式 -it 是为了演示效果。

/ #                             //-v /data/infracon/volume/ 指定宿主机卷路径   /data/web/html :关联容器的路径

# docker run --name nginx --network container:infracon --volumes-from infracon -it busybox   

    //另起一个窗口,--network container:infracon表示nginx容器加入到基础容器infracon的网络中,--volumes-from infracon表示使用容器infracon的挂载卷路径

# docker inspect infracon

# docker inspect nginx  //同上

 

docker存储卷、基于docker file做镜像文件,以及使用hap做私有仓库

 

posted @ 2019-03-11 22:35  Study~Column  阅读(493)  评论(0编辑  收藏  举报