实训第三十九天(了解docker-compose,docker-compose编排容器,配置harbor服务)

一、回顾


1、拉取私有仓库镜像
 # 配置docker
 docker pull 10.0.0.10:5000/centosnginx:v0
2、容器网络类型
 brideg(net) default
 # docker启动之后会生成新的虚拟网卡,网卡的名称docker0
 # 网段默认是172.17.0.1
 # 所有的容器都桥接docker0,通过桥接共享网络
 brctrl show
   yum -y install bridge-utils
 host
   # 使用方便,直接使用宿主机的ip
   # 无法并发运行多个同类的容器
   docker run -it --network bridge|host|none   centos:latest /bin/bash
 none
3、跨主机容器网络(两台不同主机上的容器的连接)
 # A主机上的a1容器可以访问B主机上的b1容器
 # flanneld技术
 # 使用flanneld分配网段,被分配的网段都可以ping通
 # 步骤
 node11
   docker
   etcd(数据库,被flanneld保存网络地址网段等信息)
      yum -y install etcd
      # 1、配置文件
      /etc/etcd/etcd.conf
      # 修改了发布服务的端口和介绍请求的端口4001,2379
      ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
      ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379,http://10.0.0.11:4001"
      # 2、启动服务
      systemctl start etcd
      # 3、测试服务
      netstat -lntup | grep 2379
      netstat -lntup | grep 4001
      etcdctl set a 123
      etcdctl get a
      # 4、检查安全
      etcdctl -C http://10.0.0.10:4001 cluster-health
   flanneld
      yum -y install flanneld
      # 5、配置连接数据库
      vim /etc/sysconfig/flanneld 
      FLANNEL_ETCD_ENDPOINTS="http://10.0.0.11:2379"
      # 在启动之前要在etcd数据库中添加指定网段
      172.20.0.0/16
      etcdctl mk /atomic.io/network/config '{ "Network" : "172.20.0.0/16" }'
      # 6、启动服务,在启动flanneld服务的时候,会先读取etcd中的network信息,确定要创建的网段
      systemctl start flanneld
      # 7、查看分配的网段
      ifconfig|ip a s查看新的flannel0网卡
      # 8、如果不配置docker的daemon.json文件,那么默认docker容器的IP地址是172.17.0.1,需要修改daemon.json并且重启docker服务,让docker0这个网卡的网段和flannel0网卡的网段一致
      cat /run/flannld/subnet.env
      vim /etc/docker/daemon.json
      {
      ...,
      "bip" : "172.20.x.x",
      "mtu" : 1472
      }
      # 9、重启docker服务,查看docker0的网段
      systemctl restart docker
      ifconfig docker0
 node22
   # 1、安装docker
   # 2、安装flanneld
   yum -y install flanneld
   # 3、配置/etc/sysconfig/flanneld,从node11中的etcd数据库中读取网络信息
   # 4、启动flanneld
   # 5、ip a s flannel0 分配了一个新的网段
   # 6、修改node22下面的daemon 添加两个key bip mtu
   # 7、重启docker服务
   # 8、docker0的ip地址和flannel0的ip地址保持一致

二、使用docker-compose编排容器

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。

1、Docker-compose 定义
1)docker compose 是 docker 官⽅的开源项⽬,负责实现对 docker 容器集群的快速编排(容器,依赖,⽹络,挂载。。)

2)compose 是 docker 公司推出的⼀个⼯具软件,可以管理多个 docker 容器组成的应⽤

3) 需要定义⼀个 YAML 格式的配置⽂件 docker-compose.yml,写 好多个容器之间的调⽤关系

4)使⽤ compose 的步骤

使⽤ Dockerfile 定义各个微服务应⽤并构建出对应的镜像⽂件Dockerfile 的使⽤,以便可以在任何地⽅复制。

使⽤ docker-compose.yml 定义⼀个完整的业务单元,安排好整体应⽤中的各个容器服务。

最后,执⾏ docker-compose up 命令来启动并运⾏整个应⽤程序,完成⼀键部署。

2、Docker-compose 产⽣背景


1)使⽤ Dockerfile 定义镜像⽂件,再⼿动构建、运⾏容器等操作,⽽微服务架构⼀般包含若⼲个微服务,且每个微服务⼀般都会部署多个实例,所以,若每个微服务都需要⼿动启停,那么维护量会⾮常庞⼤,并且⼯作效率也会很低。

2)⽽ compose 是⽤于定义和运⾏多容器 docker 应⽤程序的⼯具。通过 compose,可以使⽤ YML ⽂件来配置应⽤程序需要的所有服务。

3)仅需使⽤⼀个命令,就可以从 YML ⽂件配置中创建并启动所有 服务。

4)Compose 可以基于 Compose ⽂件帮我们快速的部署分布式应 ⽤,⽆需⼿动⼀个个创建和运⾏容器。

5)Compose ⽂件是⼀个⽂本⽂件,通过指令定义集群中的每个容 器如何运⾏。

3、Docker-compose 核⼼概念
Docker-compose 将管理的容器分为三层:⼯程(project)、 服务(service)、容器(container)

1、⼯程:运⾏ compose 的⽬录下所有的⽂件,包括 docker-compose.yml、extends ⽂件、环境变量⽂件等组成⼀个⼯程, 若⽆特殊指定⼯程,⼯程名即为当前⽬录名。⼯程的默认配置⽂件为 docker-compose.yml,可通过环境变量 COMPOSE_FILE 或 -f 参数⾃定义配置⽂件,其定义了多个有依赖关系的服务及每个服务运⾏的容器。

2、 服务:⼀个⼯程中包含多个服务,每个服务中定义了容器运⾏的 镜像、参数、依赖等。⼀个服务中可包括多个容器实例。

3、容器:被 docker-compose 管理或部署的容器集群,调⽤ docker 服务提供的 API 来对容器进⾏管理,只要操作的平台⽀持 docker API,即可在其上进⾏ compose 的容器编排。

4、YAML ⽂件的格式和语法
1)YAML ⽂件格式
yaml 是⼀种标记语⾔很直观的数据序列化格式,可读性很⾼。 类似于 xml 描述性语⾔,语法⽐xml简单的很多。

yaml 数据结构通过缩进进⾏表示,连续的项⽬通过减号来表示,键值对⽤冒号分隔,数组⽤中括号括起来,hash⽤花括号括起来。

yaml ⽂件的基本格式由⼀系列键值对构成。每个键值对都⽤冒号“: ”分隔

 key: value
在 yaml 中,键和值之间只需要⼀个空格,这是为了保证 yaml ⽂件的可读性和⼀致性

对于字符串值,可以使⽤单引号或者双引号将其括起来,这样可以避免出现特殊字符或空格等问题

 name: 'Meng Mr' 
 age: "34"
如果值包含特殊字符(如冒号或短横线),则应该使⽤引号将其括起来

 description: "This is a YAML file: good for configuation files."
2)YAML 注意事项
不⽀持制表符 tab 键缩进,需要使⽤空格缩进。

通常开头缩进 2 个空格。

字符后缩进 1 个空格,如:冒号,逗号,横杠。

⽤ # 表示注释。

如果包含特殊字符⽤单引号引起来。

布尔值(true、false、yes、no、on、off)必须使⽤“”引号括起来,这样分析器会将它们解释为字符串。

3)列表和数组
在yaml中,可以使⽤“-”符号表示⼀个列表和数组

 fruits:    # fruits是⼀个键,它对应⼀个列表,包含三个元素:apple、banana、orange
   - apple   # fruits为⼀个⼤项,下⾯的⼩项只需要缩进⼏个
 空格,与其他项⽬对⻬即可
   - banana
   - orange
4)嵌套数据结构
yaml⽀持嵌套数据结构,可以⽤缩进来表示不同层级之间的关系, 可使⽤ # 号表示注释信息。

 person:   
  name: 'Meng Mr'   # 两个空格,name和age是person的⼀级⼦节点
  age: "34"
  address:          # address是person的⼆级⼦节点
    street: '123 Main St'   # address节点包含了street、city、state和zip四个⼀级⼦节点
    city: 'Anytown'
    state: 'CA'
    zip: '12345'
5)Docker-compose 安装
使用pip工具-------安装docker-compose

pip是python的包管理工具,和yum是redhat的关系是一样的

 # 由于要使用python环境运行docker-compose,所以需要验证pyt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值