频道栏目
首页 > 网络 > 云计算 > 正文

世界杯投注官网

2019-01-21 13:30:08           
收藏   我要投稿

Dcoker 入门之存储卷

首发:arppinging.com

Docker 入门之存储卷一、Docker中的文件二、存在的问题和解决方案1)存在的问题2)解决方案三、什么是docker存储卷?1)概述2)卷(volume)的特点3)卷的类型(volume types)四、使用docker存储卷(volume)1)docker-managed volume2)bind mount volume3)复制使用其他容器的卷

Docker 入门之存储卷

一、Docker中的文件

首先我们需要回顾一下之前的内容:
1、docker镜像由多个层叠加而成,启动容器时,docker会加载只读镜像层,并在镜像栈顶部添加一个读写层。

2、如果运行中的容器修改了现有的一个已经存在的文件,那该文件会从只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏,此即“写时复制(COW)”机制。

通俗来讲:容器是分层的,最上面一层是可读写层,对所有数据的修改,都是保存在最上层的;在运行容器之后,所有的操作都不会影响到镜像本身,如果是编辑操作,那么docker只会从只读层将文件复制(非移动)到读写层给世界杯指定投注官网进行编辑。

docker中的文件docker中的文件

二、存在的问题和解决方案

1)存在的问题

1、当世界杯指定投注官网关闭和重启容器时,容器中的数据不受影响,但删除容器,则其数据会全部丢失。

2、数据存储在联合文件系统中,不易于宿主机访问。

3、容器间数据共享不便

4、容器写入和更改数据效率低,部分文件需要从底层复制,不适合IO较高的应用。

2)解决方案

“卷”是容器一个或多个“目录”,此次类目录可绕过联合文件系统,于宿主机上的目录“绑定(关联)”

目录绑定目录绑定

三、什么是docker存储卷?

1)概述

将宿主机的目录直接于容器中的目录进行绑定,容器向目录写入数据时,可以直接写入宿主机的目录中。这样容器内的数据保存时就能绕过容器内部文件系统的限制,与宿主机的文件系统建立关联关系,实现数据共享,容器被停止或者删除时,数据不会丢失。

2)卷(volume)的特点

1、volume于容器初始化之时即会创建,由base image提供的卷中的数据会在此期间完成复制。(例:将宿主机上/data/docker/b1 和 容器b1中的/etc/绑定,那么会将容器中/etc/的内容复制到宿主机/dta/docker/b1/目录中)

2、volume的初衷是独立于容器的生命周期实现数据持久化,因此删除容器之时即不会删除卷,也不会对哪怕未被引用的卷做垃圾回收操作。

3、volume为docker提供了独立于容器的数据管理机制
(可以把”镜像“想象为静态文件,例如”程序“,把”卷“类比为动态内容,例如”数据“;于是,镜像可以被重用,而卷可以被共享;卷实现了”程序(镜像)“和”数据(卷)“的分离,世界杯指定投注官网制作镜像时无需再考虑镜像运行的容器所在的环境)

docker 卷docker 卷

3)卷的类型(volume types)

docker 有两种类型的卷,每种类型都在容器中存在一个挂载点,但其在宿主机上的位置有所不同

3.1 bind mount volume(绑定挂载卷)

a volume that points to a user-specified location on the host file system

3.2 docker-manged volume(docker 管理卷)

the docker daemon creates managed volumes in a portion of the host&世界杯投注官网39;s file system that&世界杯投注官网39;s system that&世界杯投注官网39;s owned by docker

两种类型的卷两种类型的卷

bind mount volume:指定绑定的路径

docker-managed volume:宿主机的路径由docker daemon定义

四、使用docker存储卷(volume)

无论是哪种类型的卷,都使用docker run的-v参数。

1)docker-managed volume

1.1 创建容器b1,指定b1的/data/目录使用存储卷

[[email protected]~]世界杯投注官网dockerrun--nameb1-it-v/databusybox
/世界杯投注官网cd/data/
/data世界杯投注官网ls
/data世界杯投注官网

1.2 查看关联的宿主机目录

[[email protected]]世界杯投注官网dockerinspect-f{{.Mounts}}b1
[{volume4e1f3596768357e009da8df6d38c4339df04b64dee2d80e262609f83b87d4177/var/lib/docker/volumes/4e1f3596768357e009da8df6d38c4339df04b64dee2d80e262609f83b87d4177/_data/datalocaltrue}]
[[email protected]]世界杯投注官网

1.3 在宿主机目录中写入文件

[[email protected]]世界杯投注官网cd/var/lib/docker/volumes/4e1f3596768357e009da8df6d38c4339df04b64dee2d80e262609f83b87d4177/_data/
[[email protected]_data]世界杯投注官网echo&世界杯投注官网39;welcometoarppinging.com&世界杯投注官网39;>>test.txt
[[email protected]_data]世界杯投注官网cattest.txt
welcometoarppinging.com
[[email protected]_data]世界杯投注官网

1.4 在容器b1中查看是否有test.txt文件

/data世界杯投注官网cat/data/test.txt
welcometoarppinging.com
/data世界杯投注官网

2)bind mount volume

使用绑定挂载卷的时候,如果宿主机的目录不存在,那么会自动创建该目录。

1.1 创建容器b2,配置宿主机的/data/docker/b2/与容器b2的/data/关联

[[email protected]~]世界杯投注官网dockerrun--nameb2-it-v/data/docker/b2:/databusybox
/世界杯投注官网ls/data/
/世界杯投注官网

1.2 查看b2的关联目录

[[email protected]_data]世界杯投注官网dockerinspect-f{{.Mounts}}b2
[{bind/data/docker/b2/datatruerprivate}]
[[email protected]_data]世界杯投注官网

1.3 在b2的/data/中创建一个文件,

/世界杯投注官网cd/data/
/data世界杯投注官网echo&世界杯投注官网39;welcometob2.arppinging.com&世界杯投注官网39;>b2.html
/data世界杯投注官网

1.4 在宿主机的/data/docker/b2中是否能看到b2创建的文件?

[[email protected]/]世界杯投注官网cd/data/docker/b2/
[[email protected]]世界杯投注官网ls
b2.html
[[email protected]]世界杯投注官网catb2.html
welcometob2.arppinging.com
[[email protected]]世界杯投注官网

1.5 删除容器b2,查看宿主机的目录文件是否还存在

[[email protected]~]世界杯投注官网dockerrmb2
b2
[[email protected]~]世界杯投注官网dockerps-a
CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
ec2ff6aeb48abusybox"sh"10minutesagoExited(0)4minutesagob1
[[email protected]~]世界杯投注官网
[[email protected]~]世界杯投注官网cd/data/docker/b2/
[[email protected]]世界杯投注官网catb2.html
welcometob2.arppinging.com
[[email protected]]世界杯投注官网

3)复制使用其他容器的卷

复制和使用其他容器的卷,使用的是--volumes-from选项
创建一个容器b3,使用b1的存储卷

[[email protected]]世界杯投注官网dockerrun--nameb3-it--volumes-fromb1busybox
/世界杯投注官网cat/data/test.txt
welcometoarppinging.com
/世界杯投注官网

查看映射卷

[[email protected]]世界杯投注官网dockerinspect-f{{.Mounts}}b1
[{volume4e1f3596768357e009da8df6d38c4339df04b64dee2d80e262609f83b87d4177/var/lib/docker/volumes/4e1f3596768357e009da8df6d38c4339df04b64dee2d80e262609f83b87d4177/_data/datalocaltrue}]
[[email protected]]世界杯投注官网dockerinspect-f{{.Mounts}}b3
[{volume4e1f3596768357e009da8df6d38c4339df04b64dee2d80e262609f83b87d4177/var/lib/docker/volumes/4e1f3596768357e009da8df6d38c4339df04b64dee2d80e262609f83b87d4177/_data/datalocaltrue}]
[[email protected]]世界杯投注官网

 

上一篇:教你如何选网站空间
下一篇:keepalived+haproxy高可用实例
相关文章
图文推荐

关于我们 | 联系我们 | 服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑--致力于做实用的IT技术学习网站