文章目录
- 基本概念
- Docker Compose
- Swarm分布式
- Node
- Task
- service
- 集群搭建
- 弹性伸缩
基本概念
针对容器生命周期的管理,对容器生命周期进行更方便更快捷的方式进行管理。
- 依赖管理:当一个容器必须在另一个容器运行完成后,才能运行时,就需要依赖管理
- 副本数控制:容器有时候也需要集群,快速的对容器集群进行弹性伸缩
- 配置共享:通过配置文件统一描述需要运行的服务相关信息,自动解析配置内容,并创建对应的服务
Docker Compose
- 服务 services:需要运行的容器配置,可以理解为原先用
docker run
命令后面跟的一系列命令都可以写在里面。 - 网络 network:docker-compose公共自定义网络管理,配置好后可以直接用这个网络配置,这个配置可以多容器使用。
- 数据卷 volumes:统一数据卷管理,可以给多个sercice使用
下面是docker-compose.yaml
文件
version: "3.3"
services:
nginx-demo:
image: "nginx"
container_name: "nginx_compose"
restart: "always"
networks:
- wolfcode_net
volumes:
- /root/docker:/usr/share/nginx/html
environment:
APP_ENV: dev
dns:
- 114.114.115.115
ports:
- "80:80"
networks:
wolfcode_net:
driver: bridge
ipam:
driver: default
config:
- subnet: 188.18.0.0/16
在启动时,可以只启动一个服务
docker-compose create nginx-demo
因为这个nginx是依赖网络的,所以它的状态是退出的,要用以下命令运行所有服务
docker-compose up -d
想要批量创建这个容器时,需要用到scale,该命令可以扩容/缩容对应的容器
// 将容器扩容为3个
docker-compose scale nginx-demo=3
//将容器缩容为2个
docker-compose scale nginx-demo=2
Swarm分布式
docker swarm可以在多个服务器上创建集群服务,通过daemon引擎实现
- 初始化节点
- 加入节点
- 退出节点
Node
运行在docker的主机可以主动初始化一个swarm集群或加入一个已经存在的集群,这样该主机就成为一个swarm集群的节点(Node)
节点分为管理(manager)节点和工作(worker)节点。
管理节点用于swarm集群的管理,一个集群可以有多个管理节点,但只有一个管理节点能成为leader,leader通过raft协议实现。通常第一个启动的节点是leader,后面启动的是follower
Task
任务(Task)是swarm中最小的调度单位,目前来说是一个单一的容器。
service
服务是一组任务的集合,服务定义了任务的属性‘
集群搭建
用如下命令创建一个集群
docker swarm init --advertise-addr 192.168.113.120
然后会提示想要加入该集群可以运行的命令
查看集群情况(只有管理节点能看)
docker node ls
弹性伸缩
在集群中创建服务
docker service create --replicas 3 -p 80:80 --name nginx_swarm nginx
查看服务信息
docker service inspect --pretty nginx_swarm
收缩容器
docker service update --replicas 2 nginx_swarm
在工作节点上退出集群
docker swarm leave