网站建设方法氵金手指排名27业务外包的优势和劣势
- 作者: 五速梦信息网
- 时间: 2026年04月20日 07:51
当前位置: 首页 > news >正文
网站建设方法氵金手指排名27,业务外包的优势和劣势,网店推广软文范例,网页设计与制作100例论文docker分层结构 如图所示#xff0c;容器是由最上面可读可写的容器层#xff0c;以及若干个只读镜像层组成#xff0c;创建容器时#xff0c;容器中的 数据都来自镜像层。这样的分层机构最大的特点是写时复制#xff1a; 1、容器中新生成的数据会直接存放在容器层#xf…docker分层结构 如图所示容器是由最上面可读可写的容器层以及若干个只读镜像层组成创建容器时容器中的 数据都来自镜像层。这样的分层机构最大的特点是写时复制 1、容器中新生成的数据会直接存放在容器层也可以称之为可写层。 2、修改容器中现有的数据会先从镜像层将数据复制到容器层修改后的数据就会直接保存在容器层而镜像层数据不会有任何变化。 3、如果多个镜像层中有相同的命名文件在容器层只会看到最上面镜像层的内容。 联合挂载技术 Docke镜像采用这种分层构建设计能使镜像结构和容器的创建共享和分发变得非常高效每个镜 像层可以称之为layer这些layer被存放在了/var/lib/docker/volume//目录下这里 的storage-driver可以有很多种比如AUFS、OverlayFS、VFS、Brtfs等。可以通过docker info命令查 看存储驱动通常Ubuntu类的系统默认采用的是AUFSCentos7.1系列采用的是OverlayFS。 OverlayFS是一种堆叠文件系统它依赖并建立在其它的文件系统之上例如ext4fs和xfs等等并 不直接参与磁盘空间结构的划分仅仅将原来底层文件系统中不同的目录进行合并然后向用户呈现这 也就是联合挂载技术如图所示。 而Linux内核为Docker提供的OverlayFS驱动有两种overlay和 overlay2。而overlay2是相对于overlay的一种改进在inode利用率方面比overlay更有效。但是overlay 有环境需求Docker版本17.06.02宿主机文件系统需要是ext4或xfs格式。 data volume 默认情况下在容器内创建的所有文件都存储在可写容器层上。这意味着当该容器不再存在时数 据将不会持久保存并且如果另一个进程需要它则可能很难从容器中取出数据。为了能够保存持久化数 据Docker提出了volume的概念。 为了能够保存持久化数据Docker提出了volume的概念。简单来说volume就是目录或者文件 它可以绕过默认的联合文件系统而以正常的文件或者目录的形式存在于Docker Host文件系统上。 Docker为容器提供了两个选项来将文件存储在主机中以便即使容器停止后文件也可以持久存储。 Volume类型 – Bind mounts 宿主机——》 容器 – Docker managed volume 容器——》宿主机 bind mounts Bind mounts只需要在创建容器时使用-v参数指明Docker host目录或文件和容器目录或文件映射的对应关系 将本地的数据映射到容器内可以使用多个-v映射多个目录或文件还需要注意的是目录只能映射目录文件只能映射 文件不然会报错。实例如下 1、在Docker host中创建目录与容器的/usr/share/nginx/html目录做映射在容器中/usr/share/nginx/html 目录已经存在如果不存在会自动创建路径映射时会隐藏容器中原本的数据取而代之的是Docker host上的 /html目录中的数据。 [rootdocker ~]# mkdir /html [rootdocker ~]# vim /html/index.html welcome to huayuedu!!! [rootdocker ~]# docker run –name cynginx -itd -p 80:80 -v /html:/usr/share/nginx/html nginx:latest cc0c8d7ac53af8b29f32aae76b767e51e6c3358ed2b491bd1ef4e0b96e77f3e5 [rootdocker ~]# curl http://127.0.0.1 welcome to huayuedu!! bind mount 2、当Docker host上的数据发生了变化容器中的数据也会随着发生变化示例如下 [rootdocker ~]# echo hello huayu /html/index.html [rootdocker ~]# curl http://127.0.0.1 hello huay 3、就算是把容器删除也不会影响到Docker host上的数据示例如下。 [rootdocker ~]# docker stop cynginx cynginx [rootdocker ~]# docker rm cynginx cynginx [rootdocker ~]# cat /html/index.html hello huay bind mount 4、此外Bind mounts还可以指定数据的读写权限默认权限是可读可写示例如下在映射volume时指定 容器中的文件权限只读那么在容器内该文件只能被读取无法修改这样也提高了容器的安全性 [rootdocker ~]# docker run –name cynginx1 -itd -p 80:80 -v /html/index.html:/usr/share/nginx/html/ index.html:ro nginx:latest [rootdocker ~]# curl http://127.0.0.1 hello huayu [rootdocker ~]# docker exec -it cynginx1 /bin/bash root0555f35f03e8:/# echo huayu123 /usr/share/nginx/html/index.html bash: /usr/share/nginx/html/index.html: Read-only file system 通过上面的示例我们已经理解了Bind mounts的使用但是它也有自身的不足之处使用时需要指定Docker host上的文件或目录为源数据这样就限制了容器的可移植性。例如当需要把容器移动到其他的Docker host上的时 候如果对方Docker host上没有源数据库或者路径不相同操作会失败 docker managed volum 第二种volume类型是由Docker管理的volume与Bind mounts相比Docker管理的volume在使用时不需要指 定Docker host路径Docker管理的volume具有以下几个优点 1、与Bind mounts相比Docker管理的volume更易于备份或迁移。 2、用户可以使用Docker CLI命令或Docker API管理volume。 3、volume在Linux和Windows容器上均可工作。 4、可以在多个容器之间更安全地共享volume提供volume加密功能。 6、可以通过容器预先填充新volume的内容。 实例如下 1、通过-v告诉Docker需要一个volume并将其mount到/usr/share/nginx/html目录那么Docker会在 /var/lib/docker/volumes/目录下创建volume。 [rootdocker ~]# docker run –name cynginx2 -itd -p 80:80 -v /usr/share/nginx/html/ nginx 22c875d19f3f12c8528e8f5316395305c04b3f127cdb5d877e57c055d1933fa72、使用docker inspect查看容器的mounts部分可以看到docker host上的 /var/lib/docker/volumes/6adbe6c8051f58c1d5cc2e8a12faaf1e6aa60b1075433b33a410a5d55cd8e69c/_data目录已经挂在到容器中 /usr/share/nginx/html目录下但是查看Docker host的volume中内容内容是容器中的数据。也就是说使用Docker管理的volume在做映射时会把容 器中的数据映射到Docker host [rootdocker ~]# docker inspect cynginx2 Mounts: [ { Type: volume, Name: 6adbe6c8051f58c1d5cc2e8a12faaf1e6aa60b1075433b33a410a5d55cd8e69c, Source: /var/lib/docker/volumes/6adbe6c8051f58c1d5cc2e8a12faaf1e6aa60b1075433b33a410a5d55cd8e69c/_data, Destination: /usr/share/nginx/html, …… [rootdocker ~]#ls /var/lib/docker/volumes/6adbe6c8051f58c1d5cc2e8a12faaf1e6aa60b1075433b33a4 10a5d55cd8e69c/_data 50x.html index.html 3、我们修改volume中的数据再访问发现volume中修改的数据会同步到容器中的。 [rootdocker ~]# echo huayu1234 /var/lib/docker/volumes/6adbe6c8051f58c1d5cc2e8a12faaf1e6aa6 0b1075433b33a410a5d55cd8e69c/_data/index.html [rootdocker ~]# curl http://127.0.0.1 huayu1234 4、我们还可以是使用docker volume命令查看docker管理的有哪些volume并且还可以创建volume示例如 下创建一个volume名为cyhuayu。在创建新的容器时可以直接指定使用该volume。 [rootdocker ~]# docker volume ls DRIVER VOLUME NAME local 6adbe6c8051f58c1d5cc2e8a12faaf1e6aa60b1075433b33a410a5d55cd8e69c [rootdocker ~]# docker volume create cyhuayu cyhuayu [rootdocker ~]# docker volume ls DRIVER VOLUME NAME local 6adbe6c8051f58c1d5cc2e8a12faaf1e6aa60b1075433b33a410a5d55cd8e69c local cyhuayu [rootdocker ~]# docker run –name cynginx3 -itd -p 81:80 -v cyhuayu:/usr/share/nginx/html/ nginx:latest 072c6758e9a815f2421861a54bfc8168eaf286df66f1d3187bc3c4141880e52f两种volume不同点 在使用docker volume命令创建volume时volume默认都是存在在本地的实际上本地的volume 就是一个目录。除此之外Docker还支持在外部存储系统上创建volume比如NFS、Ceph等。 目前我们已经学习了Docker的两种volume的理论和基本操作它们两者之间的相同点都是使用 Docker host文件系统中的某个路径。不同点如下表所示 容器之间数据共享 实现容器间数据共享的方法如下 – 第一种方法是将共享数据放在volume中然后将其mount到多个容器。 – 第二种方法是使用volume containervolume container是用来为其他容器提供volume的容器。 这样可以提高容器的可移植性。 – 第三种方法是将数据打包到镜像中然后通过–volumes-from共享 第一种方法 第一种方法是将共享数据放在volume中然后将其mount到多个容器。示例如下创建由三个nginx容器组成的 web集群使用相同的html文件。在使用-v指定volume时可以是Docker host的路径或者是Docker创建的volume。 [rootdocker ~]# docker run –name apache1 -itd -p 8081:80 -v /html:/usr/share/nginx/html/ nginx:latest [rootdocker ~]# docker run –name apache2 -itd -p 8082:80 -v /html:/usr/share/nginx/html/ nginx:latest [rootdocker ~]# docker run –name apache3 -itd -p 8083:80 -v /html:/usr/share/nginx/html/ nginx:latest [rootdocker ~]# curl http://127.0.0.1:8081 hello huayu [rootdocker ~]# curl http://127.0.0.1:8082 hello huayu [rootdocker ~]# curl http://127.0.0.1:8083 hello huay 第二种方法 第二种方法是使用volume containervolume container是用来为其他容器提供volume的容器。这样可以提高容 器的可移植性。 创建volume container容器名为cy_data使用-v指定了volume提供html文件。需要注意的是这里使用的 是docker create创建的容器也就是说容器只是创建了并未启动因为volume container只是提供数据自身并不 需要运行 [rootdocker ~]# docker create –name cy_data -v /html:/usr/share/nginx/html busybox 创建新的nginx容器使用参数–volumes-from指定使用cy_data容器提供的volume。 [rootdocker ~]# docker run –name cynginx1 -itd -p 8081:80 –volumes-from cy_data nginx [rootdocker ~]# docker run –name cynginx2 -itd -p 8082:80 –volumes-from cy_data nginx [rootdocker ~]# docker run –name cynginx3 -itd -p 8083:80 –volumes-from cy_data ngin 通过docker inspect查看容器信息中的Mounts部分可以看到新创建的nginx容器已经使用了cy_data容器所提供 的volume。经过验证三个nginx容器中的html文件一样。 [rootdocker ~]# docker inspect cynginx1 [rootdocker ~]# echo welcome to huayuedu /html/index.html [rootdocker ~]# curl http://127.0.0.1:8081 welcome to huayuedu [rootdocker ~]# curl http://127.0.0.1:8082 welcome to huayuedu [rootdocker ~]# curl http://127.0.0.1:8083 welcome to huayued 与第一种实现数据共享的方法相比不必再为每个容器指定volemu所有volume都在volume container 中定义 好了容器只需与volume container关联实现了容器与Docker host的解 第三种方法 volume container的数据归根到底还是在Docker host里对容器的可移植性有一定的限制。这里可以使用data- packed volume container。其原理是将数据打包到镜像中然后通过–volumes-from共享。 示例如下使用Dockerfile构建镜像将Docker host中的数据进行打包。ADD指令是将html目录中的数据添加到 容器目录/usr/share/nginx/html中。VOLUME指令的作用与-v效果相同用来创建volume并且会把 /usr/share/nginx /html目录中的数据复制到volume中。 [rootdocker ~]# mkdir html/ [rootdocker ~]# echo huayu index.html [rootdocker ~]# vim Dockerfile FROM busybox:latest ADD html /usr/share/nginx/html VOLUME /usr/share/nginx/html CMD [“/bin/bash”] [rootdocker ~]# docker build -t cy_hy /roo 使用新构建的镜像创建data-packed volume container创建新的nginx容器使用参数–volumes-from 指定使用cy_data123容器提供的volume [rootdocker ~]# docker create –name cy_data123 cy_hy [rootdocker ~]# docker run –name cynginx7 -itd -p 8087:80 –volumes-from cy_data123 nginx [rootdocker ~]# docker inspect cynginx7 [rootdocker ~]# curl http://127.0.0.1:8087 huayu 容器能够正确读取volume中的数据。data-packed volume container是自包含的不依赖Docker host 提供数据具有很强的移植性非常适合只使用静态数据的场景比如应用的配置信息、web server的静态文 件等 总结 1、实现数据共享的方法有容器指定同一个volume、volume contauner和data-packed volume contauner。 2、volume分为两类Bind mounts和Docker managed volume。 3、创建容器时使用-v参数可以实现容器数据持久化存储volume分为两类Bind mounts类型是 将volume中的数据复制到容器中Docker managed volume是将容器中的数据复制到volume中
相关文章
-
网站建设方案文本模板中文wordpress模板
网站建设方案文本模板中文wordpress模板
- 技术栈
- 2026年04月20日
-
网站建设方案推广怎么在抖音上卖东西
网站建设方案推广怎么在抖音上卖东西
- 技术栈
- 2026年04月20日
-
网站建设方案书怎么签字上传集客crm
网站建设方案书怎么签字上传集客crm
- 技术栈
- 2026年04月20日
-
网站建设方法叁金手指下拉丶网站建设行业新闻动态
网站建设方法叁金手指下拉丶网站建设行业新闻动态
- 技术栈
- 2026年04月20日
-
网站建设方面的论文wordpress菜单背景6
网站建设方面的论文wordpress菜单背景6
- 技术栈
- 2026年04月20日
-
网站建设方面的书籍书籍手机版素材网站
网站建设方面的书籍书籍手机版素材网站
- 技术栈
- 2026年04月20日






