目录
1. Docker Compose
参考:
1.1. 概述
-
概述
- Compose 是docker官方开源项目;
-
用途:
- Compose 是用于定义和运行多容器 Docker 应用程序的工具; – 高效管理容器;
- 通过 compose, 借助 YML文件 配置应用程序需要的所有服务, 使用一个命令就可以创建并启动YML文件中的所有服务; ---- 简单启用多个服务;
- 处理多个服务及依赖关系
- 区别:
- dockerfile 只能管理单个容器;
- compose 用于管理多个容器;
-
Compose 使用步骤
- 使用 Dockerfile 定义程序的环境;
- 使用 docker-compose.yml 定义构成应用程序的服务, 在隔离环境中一起运行;
- 执行
docker-compose up
启动并运行整个程序;
-
docker-compose.yml
文件示例:version: "3.9" # optional since v1.27.0 services: web: build: . ports: - "5000:5000" volumes: - .:/code - logvolume01:/var/log links: - redis redis: image: redis volumes: logvolume01: {}
docker-compose up : 可以一次启用100个服务;
- Compose重要概念:
- 服务services: 容器, 应用 (web, redis, mysql)
- 项目project: 一组关联的容器;
1.2. 安装
- 步骤
# 官网: # 其他 sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose # 赋权 sudo chmod +x /usr/local/bin/docker-compose # 验证 docker-compose --version docker-compose version 1.16.1, build 1719ceb
1.3. 使用
1.3.1. 常用命令
- 基本命令
docker-compose -h # 查看帮助 docker-compose up # 创建并运行所有容器 docker-compose up -d # 创建并后台运行所有容器 docker-compose -f docker-compose.yml up -d # 指定模板 docker-compose down # 停止并删除容器、网络、卷、镜像。 docker-compose logs # 查看容器输出日志 docker-compose pull # 拉取依赖镜像 dokcer-compose config # 检查配置 dokcer-compose config -q # 检查配置,有问题才有输出 docker-compose restart # 重启服务 docker-compose start # 启动服务 docker-compose stop # 停止服务
2. Docker Machine
2.1. 概述
- 功能用途:
- 可以在虚拟主机上安装 docker 的工具; 可以使用 docker-machine命令来管理主机;
- 可以集中管理docker主机, 包括云供应商, 服务器本机;
- 使用 docker-machine 可以启动,检查,停止和重新启动托管主机,
也可以升级 Docker 客户端和守护程序,以及配置 Docker 客户端与您的主机进行通信。
2.2. 安装
3. Swarm 集群管理
- 容器编排才是目的; ==> 还是用
K8S
3.1. 概述
-
功能用途:
- 是 docker 的集群管理工具;
- 将 docker 的主机池 转变为单个虚拟docker主机;
- 提供标准的 docker API, 所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。
- 支持的工具包括: (不限于以下:)
- dokku
- docker compose
- docker machine
- Jenkins
-
概念
- swarm:
集群的管理和编号; docker可以初始化一个swarm集群, 其他节点可以加入; (管理, 工作者) - Node:
是一个docker节点; 多个节点组成一个网络集群; - Service:
任务, 可以在管理节点或是工作节点运行; ==> 核心, 用户访问; - Task
容器内的命令, 细节任务;
- swarm:
3.2. 安装
3.2.1. 组建集群
- 概述
- 安装类似于 docker单机, 关键在于多态服务器 网络建立集群;
- swarm集群
- 建议使用 3个及以上manager
- Raft 一致性协议
参考:
3.2.2. 网络模式
- 网络模式
- Swarm :
- Overlay :
- ingress : 特殊的Overlay网络, 负载均衡的功能, IPVS VIP
3.3. docker-swarm 命令
3.3.1. 基本命令:
- 全部命令
[root@rh25 ~]# docker swarm --help Usage: docker swarm COMMAND Manage Swarm Commands: ca Display and rotate the root CA init Initialize a swarm join Join a swarm as a node and/or manager join-token Manage join tokens leave Leave the swarm unlock Unlock swarm unlock-key Manage the unlock key update Update the swarm Run 'docker swarm COMMAND --help' for more information on a command.
3.3.2. 命令实战
- 常用命令
'docker swarm COMMAND --help' #查看详细内容 == 初始化 docker swarm init --advertise-addr ip == 添加节点 == # 获取令牌 docker swarm join-token manager # 生成命令,执行可添加manager --> leader docker swarm join-token worker
3.4. 集群构成
- swarm manager: 负责集群的管理工作(manager) 和 工作节点(work node)
- work node: 主要负责运行相应的服务 执行任务(task);
3.4.1. swarm manager
- 常用命令:
==== 集群管理: ==== == 查看 == # 查看当前集群信息 docker info # 查看所有节点 docker node ls # 启停某个节点 docker node update --availability active swarm-worker1 # 激活启动节点 swarm-worker1: 节点名称; docker node update --availability drain swarm-worker1 # 停止该节点 ==== 服务管理 ==== docker service --help Usage: docker service COMMAND Manage services Commands: create Create a new service inspect Display detailed information on one or more services logs Fetch the logs of a service or task ls List services ps List the tasks of one or more services rm Remove one or more services rollback Revert changes to a service\'s configuration scale Scale one or multiple replicated services update Update a service # == 创建服务 docker service creat # ==注意:== docker run #容器启动! 不具有扩缩容器 docker service # 服务, 具有扩缩容器, 滚动更新 # == 查看服务 # 查看服务部署 docker service ps servicename docker service inspect --pretty # 查看服务部署的具体信息 # == 扩展服务 # 扩展服务到两个节点 docker service scale servicename=2 # == 删除服务 docker servce rm name # == 滚动升级服务 # == 动态扩缩容 # my-nginx 动态扩缩容 docker service update --relipcas 3 my-nginx docker service scale my-nginx=5
3.4.2. work node
3.4.3. Raft协议
-
双主双从: 假设一个节点, 其他节点可以用;
-
Raft协议: 保证大多数节点存活才可以用, 只要 >1 管理节点, 集群至少3个主节点;
- 保证主节点可用;
- 高可用
注:
- zookeeper 是 zab 算法;
- 扩缩容, 高可用, 集群
3.5. 拓展
3.5.1. docker stack
-
docker-compose 单机部署项目
-
docker stack部署 集群部署
# 单机 docker-compose up -d xxx.yaml # 集群 docker stack deploy xxx.yaml
3.5.2. docker secret
-
安全, 配置密码, 证书;
docker secret --help Usage: docker secret COMMAND Manage Docker secrets Commands: create Create a secret from a file or STDIN as content inspect Display detailed information on one or more secrets ls List secrets rm Remove one or more secrets
3.5.3. docker config
- 用于配置
后面用到再补充
==> K8S