day80-86-容器技术-docker基础

   日期:2024-12-27    作者:huansu502 移动:http://3jjewl.riyuangf.com/mobile/quote/64564.html
  • 虚拟化资源提供者

    day80-86-容器技术-docker基础

    • 硬件平台虚拟化

    • 操作系统虚拟化

  • 虚拟化实现方式

    • Type I 半虚拟化

    • Type II 硬件辅助全虚拟化

    • Type III

      • 软件全虚拟化

      • 操作系统虚拟化

  • 主机虚拟化与容器虚拟化的优缺点

  • 主机虚拟化

    • 应用程序运行环境强隔离

      • 虚拟机操作系统与底层操作系统无关化

      • 虚拟机内部操作不会影响到物理机

      • 拥有操作系统会占用部署资源及存储

      • 网络传输效率低

      • 当应用程序需要调用硬件响应用户访问时间延迟大

    • 容器虚拟化

      • 可以实现应用程序的隔离

      • 直接使用物理机的操作系统可以快速响应用户请求

      • 不占用部署时间

      • 占用少量磁盘空间

      • 缺点:学习成本增加、操作控制麻烦、网络控制与主机虚拟化有所区别、服务治理。

  • IaaS 虚拟机

    • 阿里云 ECS

    • OpenStack VM实例

  • PaaS 容器(CaaS)

    • LXC

    • Docker

    • OpenShift

    • Rancher

  • IPC:每个容器依旧使用linux内核中进程交互的方法,实现进程间通信

    Mount:每个容器的文件系统是独立的

    Net:每个容器的网络是隔离

    User:每个容器的用户和组ID是隔离,每个容器都拥有root用户

    PID:每个容器都拥有独立的进程树,由容器是物理机中的一个进程,所以容器中的进程是物理机的线程

    总结

    容器使用的命名空间有哪些

    应用程序运行环境隔离的空间,就是一个容器,每一个容器都将拥有UTS,IPC,Mount,Net,User,PID。

    • CGroups

      • 控制组

      • 作用:用于实现容器的资源隔离

      • 可对进程做资源隔离

      • 9 大子系统

        • 把资源定义为子系统,可以通过子系统对资源进行限制

        • CPU 可以让进程使用CPU的比例

        • memory 限制内存使用,例如50Mi,150Mi

        • blkio 限制块设备的IO

        • cpuacct 生成Cgroup使用CPU的资源报告

        • cpuset 用于多CPU执行Cgroup时,对进程进行CPU分组

        • devices 允许或拒绝设备的访问

        • freezer 暂停或恢复Cgroup运行

        • net_cls

        • ns

      • 应用案例

    通过Cgroup限制进程对CPU的使用

    步骤

    部署Cgroup

     
    

    Cgroup限制对CPU使用的步骤

    第一步:创建Cgroup组

    第二步:把进程添加到Cgroup

    案例

     
    
     
     
    

    案例 2 :限制内存使用

    错误内存限制

     
    

    正确的内存限制

     
    

    扩展

    • 主机虚拟化实现资源隔离的方式

      • 使用Hypervisor中的VMM实现资源隔离
    • PAM

      • 用户认证

      • 资源限制

        • ulimit

        • 仅对用户做资源限制

    • LXC

      • 2008

      • 是第一套完整的容器管理解决方案

      • 不需要任何补丁直接运行在linux内核之上管理容器

      • 创建容器慢,不方便移置

    • Docker

      • 2013

      • dotcloud

      • 是在LXC基础上发展起来的

      • 拥有一套容器管理生态系统

      • 生态系统包含:容器镜像、注册表、RESTFul API及命令行操作界面

      • 属于容器管理系统

    • Docker版本介绍

      • 2017 之前版本

        • 1.7 ,1.8,1.9,1.10,1.11,1.12,1.13
      • 2017 年 3 月 1 日后

      • 把docker做商业开源

        • docker-ce

        • docker-ee

      • 17-03-ce

      • 17-06-ce

      • 18-03-ce

      • 18-06-ce

      • 18-09-ce

    用于管理容器

    5.2.1 官方网址

    http://www.docker.com

    5.2.2 docker所使用开发语言

    • golang

    5.2.3 YUM获取

    • 卸载旧版本
     
    
    • 安装yum-utils获取yum-config-manager
     
    
    • 通过yum-config-manager获取docker-ce.repo
     
     
    
     
    
     
    
     
    
     
    
     
     
     
     
     
    

    验证是否有镜像在本地

     
    

    本地没有镜像,需要去search镜像

    仓库:dockerhub

     
    

    本地没有镜像,需要下载镜像到本地

     
    

    运行容器

     
     
    
    • 远程管理docker daemon充分条件

      • 可以把 docker client与docker daemon分开部署

      • 可以通过第三方软件管理docker daemon创建的容器

    • 第一步:关闭docker daemon

    修改docker配置文件前,请先关闭docker守护进程

     
    
    • 第二步:修改docker daemon配置文件

    如果想使用/etc/docker/daemon.json管理docker daemon,默认情况下,/etc/docker目录中并没有daemon.json文件,添加后会导致docker daemon无法启动,在添加daemon.json文件之前,请先修改如下文件内容

     
    
    • 第三步:加载配置文件

    修改完成后,一定要加载此配置文件

     
    
    • 第四步:重新开启docker守护进程
     
    
    • 第五步:添加配置文件对docker daemon配置
      通过/etc/docker/daemon.json文件对docker守护进程文件进行配置
     
    

    docker daemon默认侦听使用的是unix格式,侦听文件:UNIX:///run/docker.sock,添加tcp://0.0.0.0:2375可实现远程管理。

    • 第六步:实例远程连接方法
     
    

    不要在命令行后面添加端口

     
     
    

    6.5.1 容器镜像获取

    6.5.1.1 容器镜像分类

    • 系统镜像

    • 应用镜像

    6.5.1.2 搜索镜像(dockerhub)

    普通命令

     
    

    管理类命令

    6.5.1.3 获取镜像(pull)

    普通命令

     
    

    管理命令

     
    

    6.5.2 容器镜像传输

    • 为了方便使用容器镜像启动多服务

    6.5.2.1 如何获取本地容器镜像打包

     
    

    6.5.2.2 传输

     
    

    6.5.2.3 导入到本地目录

     
    

    6.5.3 启动容器

    6.5.3.1 启动一个运行bash命令的容器

     
    

     
    

    6.5.3.2 启动一个运行httpd服务的容器

    启动一个容器

     
    

    在容器中安装httpd

     
    

    6.5.4 基于容器生成文件导入为容器镜像

     
    

    6.5.5 查看容器IP地址

     
    

    方法一

     
    

    方法二

     
    

    方法三

     
    

    6.5.6 停止运行中的容器

     
    

    6.5.7 开启已停止的容器

    启动

     
    

    进入

     
    

    6.5.8 删除已停止容器

     
    

    6.5.9 容器端口映射

     
    

    6.5.10 容器使用Docker Host存储数据

    第一步:在Docker Host创建用于存储目录

     
    

    第二步:运行容器并挂载上述目录

     
    

    案例:运行在容器中的http服务,使用docker host的/web目录中的网页文件,并能够在doker host上进行修改,修改后立即生效。

    第一步:创建/web并添加网页文件

     
    

    第二步:启动容器对/web目录进行挂载

     
    

    第三步:访问http(在192.168.122.185)

     
    

    额外配置案例:同步容器与docker host时间

     
    

    6.5.11 在容器外执行容器内命令

     
    

    6.5.12 容器间互联(–link)

    第一步:创建被依赖容器

     
    

    第二步:创建依赖于源容器的容器

     
    

    第三步:验证

    关闭容器

     
    

    添加一个新的容器,用于抢占c202的IP

     
    

    启动c202及c203

     
     
    

    容器与镜像之间的关系

    • docker client 向docker daemon发起创建容器的请求

    • docker daemon查找有无客户端需要的镜像

    • 如无,则到容器的镜像仓库中下载需要的镜像

    • 拿到容器镜像后,启动容器

    Docker 镜像就是一组只读的目录,或者叫只读的 Docker 容器模板,镜像中含有一个Docker 容器运行所需要的文件系统,所以我们说Docker 镜像是启动一个Docker 容器的基础。

    可以将Docker 镜像看成是Docker 容器的静态时,也可将Docker 容器看成是Docker镜像的运行时。

    容器中的进程就运行在这个可写层,这个可写层有两个状态,即运行态和退出态。当我们docker run 运行容器后,docker 容器就进入了运行态,当我们停止正在运行中的容器时,docker 容器就进入了退出态。

    我们将容器从运行态转为退出态时,期间发生的变更都会写入到容器的文件系统中(需要注意的是,此处不是写入到了docker 镜像中)。

    7.1.1 制作基础镜像

    7.1.1.1 安装一个最小化的操作系统主机

    7.1.1.2 打包操作系统的根目录

    • 排除/proc及/sys
     
    

    7.1.1.3 把获取的根打包文件导入Docker Host中

     
    
     
    

    7.1.1.4 使用基础镜像启动容器

     
    

    7.1.2 应用镜像制作

    • 指应用程序运行的环境
    7.1.2.1 使用commit提交镜像

    在基础镜像运行的容器中安装应用,此例使用httpd

     
    
    使用commit命令对正在运行的容器提交为一个应用镜像
     
    

    使用应用镜像

     
    
    7.1.2.2 使用Dockerfile创建应用镜像

    7.1.2.2.1 使用docker build命令

    7.1.2.2.2 基于Dockerfile

    7.1.2.2.3 Dockfile原理

    在Dockerfile定义所要执行的命令,使用docker build创建镜像,过程中会按照Dockerfile所定义的内容打开临时性容器(使用docker commit进行提交),把Dockerfile文件中的命令全部执行完成,就得到了一个容器应用镜像。

    • 执行命令越多,最终得到的容器应用镜像越大,所以要做优化

    7.1.2.2.4 Dockerfile关键字

    • FROM(指定基础image

    • MAINTAINER(用来指定镜像创建者信息

    • RUN (运行命令)

    • CMD(设置container启动时执行的操作

      • 如果容器镜像中有此命令,启动容器时,不要手动让容器执行其它命令
    • ENTRYPOINT(设置container启动时执行的操作

    • USER(设置container容器的用户

    • EXPOSE(指定容器需要映射到宿主机器的端口

    • ENV(用于设置环境变量

    • ADD(从src复制文件到container的dest路径

    • VOLUME(指定挂载点

    • WORKDIR(切换目录

    7.1.2.2.5 Dockerfile应用案例

    目的:通过Dockerfile创建一个可以在启动容器时就直接启动httpd应用的镜像

    步骤

    • 创建一个目录,用于存储Dockerfile所使用的文件

    • 在此目录中创建Dockerfile文件及制作镜像所使用到的文件

    • 在此此目录中使用docker build创建镜像(读取Dockerfile文件)

    • 使用创建的镜像启动容器

    思考

    1. 基础镜像是谁?centos7u6

    2. 安装httpd

    3. yum -y install httpd

    4. 安装完成后如何启动httpd? 编写一个把httpd启动的脚本文件

    5. 把httpd放在前端执行还是后端执行?前端

    6. 暴露端口?tcp80

    7. 添加一个测试文件,用于验证httpd是否可用

    过程

    创建目录

     
    

    进入目录并创建用于启动httpd的脚本文件

     
    

    创建用于测试httpd是否可用的index.html

     
    

    创建Dockerfile

     
    

    使用docker build创建镜像,注意命令最后有一个点,点表示当前目录

     
    

    使用上述创建的应用容器启动容器

     
    

    验证容器及httpd是否可用

     
    

    替代原网站内容案例

     
    

    如果遇到Rpmdb错误,可以考虑安装:yum-plugin-ovl软件包。

    案例:把nginx应用容器化

    要求

    1 、通过基础镜像做nginx应用镜像

    2 、使用nginx应用镜像启动容器时,nginx要求启动

    3 、验证nginx服务是否启动

    步骤

    1 、使用哪一个基础 centos:latest

    2 、需要使用epel YUM源

    3 、安装nginx

    4 、修改nginx配置文件,主要用于关闭daemon后台运行

    5 、验证使用的测试页面

    创建目录

     
    

    创建测试文件

     
    

    创建Dockerfile

     
    

    使用docker build创建nginx应用镜像

     
    

    启动容器验证nginx服务是否自动开启

     
     
     
    

    从图中可以看出除了最上面的一层为读写层之外,下面的其他的层都是只读的镜像层,并且除了最下面的一层外,其他的层都有会有一个指针指向自己下面的一层镜像。

    虽然统一文件系统(union file system)技术将不同的镜像层整合成一个统一的文件系统,为构成一个完整容器镜像的 层提供了一个统一的视角,隐藏了多个层的复杂性,对用户来说只存在一个文件系统,但图中的这些层并不是不能看到的,如果需要查看的话可以进入运行Docker的机器上进行查看,从这些层中可以看到Docker 内部实现的一些细节。

    Docker 的容器镜像和容器本身的数据都存放在服务器的 /var/lib/docker/ 这个路径下。不过不同的linux发行版存储方式上有差别,比如,在ubuntu发行版上存储方式为AUFS,CentOS发行版上的存储方式为Overlay或Overlay2。

    centos系统docker默认使用存储驱动是devicemapper,而这种存储驱动有两种模式loop-lvm和direct-lvm,不巧默认又使用了比较低效的loop-lvm。

    OverlayFS是一个类似于AUFS 的现代联合文件系统,更快实现简单。

    OverlayFS是内核提供的文件系统,overlay和overlay2是docker的存储驱动

    7.2.1 Overlay及Overlay2原理

    OverlayFS将单个Linux主机上的两个目录合并成一个目录。这些目录被称为层,统一过程被称为联合挂载。
    OverlayFS底层目录称为lowerdir, 高层目录称为upperdir。合并统一视图称为merged。当需要修改一个文件时,使用CoW将文件从只读的Lower复制到可写的Upper进行修改,结果也保存在Upper层。在Docker中,底下的只读层就是image,可写层就是Container。

    overlay2是overlay的改进版,只支持4.0以上内核添加了Multiple lower layers in overlayfs的特性,所以overlay2可以直接造成muitiple lower layers不用像overlay一样要通过硬链接的方式(最大 128 层) centos的话支持3.10.0-514及以上内核版本也有此特性,所以消耗更少的inode

    本质区别是镜像层之间共享数据的方法不同

    • overlay共享数据方式是通过硬连接,只挂载一层,其他层通过最高层通过硬连接形式共享(增加了磁盘inode的负担)

    如果upperdir和lowerdir有同名文件时会用upperdir的文件

    查看docker默认使用的存储驱动方法

     
     
    

    /var/lib/docker/overlay2 路径下的信息在不同的阶段会有变化,了解这几个阶段中新增的数据以及容器与镜像的存储结构的变化非常有利于我们对Docker容器以及Docker镜像的理解。

    Docker运行前、Docker运行后、下载镜像后、运行容器后四个阶段中Docker 存储的变化

    7.2.2.1 运行前

    没有启动docker daemon之间不会在/var/lib/目录中添加docker目录

    7.2.2.2 启动后
     
    
    7.2.2.3 下载镜像后
     
    

    centos镜像只有一层

     
    

    l目录中包含了很多多软链接,使用短名称指向了其他层,短名称用于避免mount参数时达到页面大小的限制

    7.2.2.4 运行容器后

    Overlay2容器结构

     
    

    启动一个容器,也是载/var/lib/docker/overlay2目录下生成一层容器层,目录包括diff,link,lower, merged,work。

    diff记录每一层自己内容的数据;link记录该层链接目录(实际是l目录下到层的链接,比如在容器中创建目录
    或在diff新增该目录;创建容器时将lower-id指向的镜像层目录以及upper目录联合挂载到merged目录;work用来完成如copy-on_write的操作。

    启动容器后,可以在docker host查看mount情况

     
     
    

    7.3.1 镜像仓库分类

    • 公有仓库

    • 私有仓库

    7.3.2 官方镜像仓库

    • 属于公有仓库

      • 创建自己的仓库
    • 登录仓库

      • linux命令行登录

     
    

    1 、上传时需要登录

    2 、当有私有镜像仓库使用时需要登录

    登录

     
     
    

    7.4.1 镜像上传

    7.4.1.1 给需要上传到公有仓库的容器镜像打标记
     
    
    7.4.1.2 把已打标记的容器镜像上传到公有仓库
     
     
    

    7.4.2 镜像下载

     
     
    

    镜像加速器主要目的在于加快用户下载容器镜像速度

    7.5.1 docker中国

    7.5.1.1 网址

    http://www.docker-cn.com

    7.5.1.2 镜像加速器

    第一步:修改/usr/lib/systemd/system/docker.service

     
    

    第二步:在/etc/docker/daemon.json

     
    

    第三步:重启docker daemon

     
    

    第四步:验证加速器是否可用

     
    

    7.5.2 阿里云加速器

     
    

    重启服务

     
     
     
    
    • 在局域内使用

    • 方便与其它系统进行集成

    • 上传下载大镜像时

    8.2.1 下载registry容器镜像

     
    

    8.2.2 创建用于挂载至registry镜像启动的仓库中,便于容器镜像持久保存

     
    

    8.2.3 启动容器获取镜像仓库

     
    

    8.2.4 验证是否用可

     
    
     
     
     
    

    8.3.1 添加用户

     
    

    8.3.2 启动仓库

     
    

    8.3.3 登录登出

     
     
    

    8.4.1 认识harbor

    • vmware公司开源

    • 良好的中文界面

    • web管理界面

    • 使用广泛

    8.4.2 工具准备

    • 使用docker-compose工具进行启动

    • 准备安装docker-compose有工具-pip

    • pip类似于yum,用于批量安装python模块及解决python模块依赖

    • pip工具准备

     
    

    docker-compose工具准备

     
    

    8.4.3 获取harbor

    8.4.4 解压

     
    

    8.4.5 配置

     
    

    8.4.6 启动

     
    
     
    

    8.4.7 访问

    8.4.8 上传镜像到harbor镜像私有仓库

    8.4.8.1 在daemon.json中添加此仓库地址
     
    
    8.4.8.2 给需要上传的镜像打标记
     
    
    8.4.8.3 上传

    登录harbor

     
    
    上传镜像
     
    
    验证是否上传成功

    8.4.9 在其它服务器上访问harbor

     
     
    
     
     
     
    

    9.1.1 bridge

    所有容器连接到桥,就可以使用外网,使用NAT让容器可以访问外网

     
    

    每一台docker host上的docker0所在网段完全一样。

    9.1.2 host

    所有的容器与docker host在同一网络中,可以让容器访问,甚至可以让外网主机访问容器中的服务

     
    

    使用–network选择容器运行的网络

     
    

    9.1.3 none

    容器仅与lo网卡,不能与外界连接,在高级应用中会使用到

     
    

    9.1.4 容器网络或联盟网络

    容器间共享同一个网络命名空间,实现容器间数据传输

    9.2.1 实现跨主机容器间通信的工具

    • Pipework

    • Flannel

    • Weave

    • Open V Switch OVS

    • Calico

    9.2.1 Flannel工作原理

    • 是Overlay网络,即覆盖型网络

    • 通过etcd保存子网信息及网络分配信息

    • 给每台Docker Host分配置一个网段

    • 通过UDP传输数据包

    9.2.2 配置flannel

    9.2.2.1 环境说明
    • node1

      • 安装软件 etcd flannel docker
    • node2

      • 安装软件 flannel docker
    9.2.2.2 主机配置
    • 主机名
     
    
    • 配置/etc/hosts

    所有主机

     
    
    • 安全配置

    所有主机

     
    
    • 安装软件

    node1

     
    

    node2

     
    
    • 配置etcd及flannel

    node1

    etcd配置

     
    

    开启etcd服务

     
    

    验证etcd

     
    

    flannel配置

     
    

    在etcd中添加网段

     
    

    启动flannel

     
    

    配置flannel与docker结合

    第一步:subnet信息

     
    

    第二步:配置docker daemon

     
    

    第三步:重启docker

     
    

    启动容器验证网络

     
    

    node2

    配置flannel

     
    
     
    
     
    

    配置flannel与docker结合

    第一步:获取subnet信息

     
    

    第二步:修改docker daemon配置文件

     
    

    第三步:重启docker

     
    

    第四步:开启容器验证

     
    
     
    

    大大的注意项

    如发现各容器内分配的ip之间相互ping不通,可能由于防火墙问题引起的,执行下面操作即可

     
     
     
    
    • 实现复杂容器应用架构之间的互联

    • docker machine

      • 用于准备docker host
    • docker compose

    通过一个文件定义复杂的容器应用之间的关系

    • docker swarm

      • 用于管理docker host

      • 把docker host生成一个集群

      • 可以使用YAML文件实现复杂容器应用编排

    • kubernetes

      • 简称 k8s

      • google公司内部使用十几年伯格系统的开源

      • 归云原生计算基金会

      • 能够实现复杂容器应用的编排部署

      • 容器自动装箱功能

      • 容器滚动更新及回滚

      • 容器水平扩展

      • 配置中心

      • 密钥和存储管理

      • 容器云平台使用kubernetes完成核心功能

        • openshift

        • rancher

    • mesos + marathon

      • mesos 集群资源管理

      • marathon 容器编排部署

    10.3.1 docker compose 作用

    在一个文件中定义复杂的容器应用之间的关系,用一个命令即可执行

    • YAML,类似于html,xml

    • YAML格式文件

    • docker-compose 使用yaml文件启动容器

      • start & stop

      • down & up

    10.3.2 docker compose定义方法

    容器分三层

    • 工程 project 一个目录

    • 服务 service 用于定义容器资源(镜像、网络、依赖、容器)

    • 容器 container 用于运行服务

    步骤

    1 、创建一个目录

    2 、创建一个docker-compose.yaml文件,定义服务

    3 、使用docker-compose命令启动服务

    10.3.3 docker-compose工具部署

     
    

    10.3.4 使用docker-compose部署应用案例

    10.3.4.1 案例一

    步骤

    第一步:创建一个工程

     
    

    第二步:定义web服务

     
    
    第三步:定义haproxy服务
     
    

    第四步:创建docker-compose.yaml文件整合以上服务

     
    

    第五步:使用docker-compose命令启动工程

     
     
    
    10.3.4.2 案例二

    创建一个python web应用,使用flask,把用户访问的次数写入到redis,通过web首页显示访问次数。

    第一步:创建一个工程目录

     
    

    第二步:创建一个应用

     
    

    创建安装的软件需求列表

     
    

    第三步:Dockerfile文件

     
    

    第四步:创建docker-compose.yaml文件

     
    

    第五步:运行

     
     
    
    10.3.4.3 案例三

    使用容器运行一个wordpress应用

    • 语言开发环境

    • 数据库

    第一步:创建一个工程目录

     
    

    第二步:创建一个docker-compose.yaml文件

     
    

    第三步:验证

     
    
    第四步:访问

    10.4.1 docker swarm介绍

    10.4.1.1 是什么
    • 是docker host集群管理工具

    • docker官方提供的

    • docker 1.12版本以后

    • 用来统一集群管理的,把整个集群资源做统一调度

    • 比kubernetes要轻量化

    • 实现scaling 规模扩大或缩小

    • 实现rolling update 滚动更新或版本回退

    • 实现service discovery 服务发现

    • 实现load balance 负载均衡

    • 实现route mesh 路由网格,服务治理

    10.4.1.2 docker swarm架构
    • 节点 (node) 就是一台docker host

      • 管理节点(manager node) 负责管理集群中的节点并向工作节点分配任务

      • 工作节点(worker node) 接收管理节点分配的任务,运行任务

    • 服务(services),在工作节点运行的,由多个任务共同组成

    • 任务(task),运行在工作节点上容器或容器中包含应用,是集群中调度最小管理单元

    10.4.2 docker swarm部署环境准备

    10.4.2.1 准备主机
    • 3 台主机

    • centos7.6

    • cpu、memory、disk不做要求

    10.4.2.2 准备ip及主机名
     
    
     
    
     
    
    10.4.2.3 安全准备
     
    
    10.4.2.4 准备docker
     
    

    10.4.3 docker swarm集群部署

    10.4.3.1 角色划分
    node1node2node3master (manager node)workerworker
    10.4.3.2 集群初始化
     
    

    可以支持多master节点

    10.4.3.3 添加工作节点到swarm集群

    node2-node3

     
    
     
    

    10.4.4 docker swarm应用

    10.4.4.1 镜像准备
    v1

     
    

    v2

     
     
    
    10.4.4.2 发布一个服务
    • 在manager node上
     
    
    • 验证
     
    
    • 扩展或缩小
     
    
    • 滚动更新或版本回退
     
     
    

    间隔更新方法

     
    
    • 删除
     
    

    10.4.5 存储卷应用

    • 持久化存储使用
    10.4.5.1 本地卷
     
    
    10.4.5.2 网络存储卷
    • 实现跨docker host之间容器数据共享

    • 持久化保存网络服务器中

    第一步:创建nfs服务
    node3上完成nfs服务

     
    

    第二步:在docker swarm中创建volume

     
    

    第三步:使用docker service发布服务时使用volume

    • 手动启动service时使用volume^

    前题条件是nfs服务已经被挂载到本地

    创建多副本时需要在每个容器运行的docker hosts上添加volume

     
     
    

    修改nfs服务器上目录内容,再次验证。

     
     
    
    • 使用编排部署方式使用volume

    请清除上一次实验创建的网络存储卷挂载

     
    

    第一步:编排部署文件

     
    

    第二步:使用docker stack发布服务

     
     
     
    

    10.5.1 是什么

    • 早期使用service发布,每次只能发布一个service

    • yaml可以发布多个服务,但是使用docker-compose只能在一台主机发布

    • 借助docker swarm同时发布多服务

    • 是docker生态service发布的最高层次

    10.5.2 案例

    目标

    1. 远程管理docke host

    2. 监控docker host上运行的容器

     
    
    • docker stack 运行多服务
     
    
    
     
    

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号