Docker容器编排

打印 上一主题 下一主题

主题 883|帖子 883|积分 2649

docker-compose

compose安装

Compose 简介

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Compose 使用的三个步骤:

  • 使用 Dockerfile 定义应用程序的环境。
  • 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
  • 最后,执行 docker-compose up 命令来启动并运行整个应用程序。
Linux 上我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址。运行以下命令以下载 Docker Compose 的当前稳定版本:
  1. curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
复制代码
要安装其他版本的 Compose,请替换 v2.20.2。
将可执行权限应用于二进制文件:
  1. sudo chmod +x /usr/local/bin/docker-compose
复制代码
创建软链:
  1. sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
复制代码
测试是否安装成功:
  1. docker-compose version
复制代码

nginx示例

docker-compose.yml配置案例如下,官方文档
  1. version: "3.8"
  2. services:
  3.   nginx-demo:
  4.     image: nginx
  5.     restart: always
  6.     networks:
  7.       - network_test
  8.     volumes:
  9.       - /Users/wandaren/develop/docker-nginx/conf/nginx.conf:/etc/nginx/nginx.conf
  10.       - /Users/wandaren/develop/docker-nginx/log:/var/log/nginx
  11.       - /Users/wandaren/develop/docker-nginx/html:/usr/share/nginx/html
  12.     environment:
  13.       APP_ENV: dev
  14.     dns: 114.114.115.115
  15.     ports:
  16.       - 80
  17. networks:
  18.   network_test:
  19.     driver: bridge
  20.     ipam:
  21.       driver: default
  22.       config:
  23.         - subnet: 188.18.0.0/16
复制代码
启动:
  1. # 创建
  2. docker-compose create nginx-demo
  3. # 加载配置并启动
  4. docker-compose up -d nginx-demo
  5. # 重新读取配置内容
  6. docker-compose up -d
  7. # 启动
  8. docker-compose start nginx-demo
  9. # 停止
  10. docker-compose stop nginx-demo
  11. # 停止并删除
  12. docker-compose down nginx-demo
复制代码

动态扩容
  1. docker-compose up -d --scale nginx-demo=2
复制代码

Swarm(分布式)

简介

Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。
支持的工具包括但不限于以下各项:

  • Dokku
  • Docker Compose
  • Docker Machine
  • Jenkins
原理

如下图所示,swarm 集群由管理节点(manager)和工作节点(work node)构成。

  • swarm mananger:负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作。
  • work node:即图中的 available node,主要负责运行相应的服务来执行任务(task)。

使用

1、创建 swarm 集群管理节点(manager)

初始化 swarm 集群,进行初始化的这台机器,就是集群的管理节点。
  1. # 172.16.156.158为虚拟机本机ip
  2. docker swarm init --advertise-addr 172.16.156.158
复制代码

以上输出,证明已经初始化成功。需要把以下这行复制出来,在增加工作节点时会用到:
  1. docker swarm join --token SWMTKN-1-4dq96unmcsz9v0m99vapdtegt5y0kym3ths69r6enlgofbgja7-7ml2skxa3y5x5cjly8uxfwoae 172.16.156.158:2377
复制代码
2、创建 swarm 集群工作节点(worker)

分别进入两个机器里,指定添加至上一步中创建的集群,这里会用到上一步复制的内容。


3、查看集群信息

进入管理节点,执行:docker info 可以查看当前集群的信息。
  1. docker info
复制代码

通过画红圈的地方,可以知道当前运行的集群中,有三个节点,其中有一个是管理节点。
进入管理节点,执行:docker node ls 查看集群信息:
  1. docker node ls
复制代码

4、部署服务到集群中

注意:跟集群管理有关的任何操作,都是在管理节点上操作的。
以下例子,在一个工作节点上创建一个名为 nginx_swarm 的nginx服务,这里是随机指派给一个工作节点:
  1. docker service create --replicas 1 -p 80:80 --name nginx_swarm nginx
复制代码


5、查看服务部署情况

查看 nginx_swarm 服务运行在哪个节点上,可以看到目前是在 wq 节点:
  1. docker service ps nginx_swarm
复制代码

查看 nginx_swarm 部署的具体信息:
  1. docker service inspect --pretty nginx_swarm
复制代码

6、扩展集群服务

调整节点个数
  1. # docker service update --replicas <num> <service id/name>
  2. docker service update --replicas 2 nginx_swarm
复制代码

服务扩展
  1. docker service scale nginx_swarm=3
复制代码

7、滚动升级服务

以下实例,我们将介绍 redis 版本如何滚动升级至更高版本。
创建一个 3.0.6 版本的 redis。
  1. docker service create --replicas 1 --name redis --update-delay 10s redis:3.0.6
复制代码
滚动升级 redis
  1. docker service update --image redis:3.0.7 redis
复制代码

8、删除服务
  1. docker service rm nginx_swarm
复制代码

9、停止某个节点接收新的任务

停止节点001
  1. docker node update --availability drain 001
复制代码

注意:001 状态变为 Drain。不会影响到集群的服务,只是 001 节点不再接收新的任务,集群的负载能力有所下降。
可以通过以下命令重新激活节点:
  1. docker node update --availability active 001
复制代码

10、节点退出集群
  1. docker swarm leave
复制代码


删除退出集群的节点
  1. docker node rm sysn25urcm4elywoiexiov431
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

农妇山泉一亩田

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表