Docker swarm 部署

Docker Swarm简介

Swarm是Docker公司推出的用来管理docker集群的平台,它是将一群Docker宿主机变成一个单一的虚拟主机,Swarm使用标准的Docker API接口作为其前端的访问入口,换言之,各种形式的DockerClient(compose,docker-py等)均可以直接与Swarm通信,甚至Docker本身都可以很容易的与Swarm集成,这大大方便了用户将原本基于单节点的系统移植到Swarm上,同时Swarm内置了对Docker网络插件的支持,用户也很容易的部署跨主机的容器集群服务。

Docker Swarm 和 Docker Compose 一样,都是 Docker 官方容器编排项目,但不同的是,Docker Compose 是一个在单个服务器或主机上创建多个容器的工具,而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然 Docker Swarm 会更加适合。从 Docker 1.12.0 版本开始,Docker Swarm 已经包含在 Docker 引擎中(docker swarm),并且已经内置了服务发现工具,我们就不需要像之前一样,再配置 Etcd 或者 Consul 来进行服务发现配置了。

Swarm deamon只是一个调度器(Scheduler)加路由器(router),Swarm自己不运行容器,它只是接受Docker客户端发来的请求,调度适合的节点来运行容器,这就意味着,即使Swarm由于某些原因挂掉了,集群中的节点也会照常运行,放Swarm重新恢复运行之后,他会收集重建集群信息。

Docker Swarm部署

1.安装docker-ce

centos

1.下载docker镜像源
wget -O /etc/yum.repos.d/docker-ce.repo https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo
2.安装docker-ce
yum install docker-ce -y

Ubuntu

1.信任Docker的GPG公钥:
curl -fsSL https://repo.huaweicloud.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
2.对于amd64架构的计算机,添加软件仓库:
sudo add-apt-repository "deb [arch=amd64] https://repo.huaweicloud.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
3.对于树莓派或其它Arm架构计算机,请运行:
echo "deb [arch=armhf] https://repo.huaweicloud.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list 
4.更新索引文件并安装
sudo apt-get update
sudo apt-get install docker-ce

2.配置docker源及存储位置

vim /etc/docker/daemon.json

{
"registry-mirrors": ["http://hub-mirror.c.163.com"],
"data-root": "/data/docker"
}

3.调整max_open_files

echo '* soft nofile 65535' >> /etc/security/limits.conf
echo '* hard nofile 65535' >> /etc/security/limits.conf

4.修改/etc/sysctl.conf 文件

echo 'net.ipv4.ip_forward  = 1' >> /etc/sysctl.conf
sysctl -p

5.创建swarm

docker swarm init --advertise-addr  192.168.232.134
提示:
Swarm initialized: current node (dshbxy1vqcucxy8d8mw7mayzh) is now a manager.
其他节点加入的命令
docker swarm join --token SWMTKN-1-0efkx702pvhit85zf2jeaoj324ehsxb4u1iz20mivbgynjsjnc-dau7cmw5o39b2o8p1xbwpeoa4 192.168.232.134:2377

6.查看节点

docker node ls

7.安装图像化界面

创建文件并给予777权限:/data/portainer_data

docker run -d -p 8000:8000 -p 9443:9443 -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /data/portainer_data:/data portainer/portainer-ce

8.访问图形化界面

http://127.0.0.1

9.Docker Swarm 常用命令

管理配置文件
docker config

查看已创建配置文件
docker config ls

将已有配置文件添加到docker配置文件中
docker config create docker 配置文件名 本地配置文件

管理swarm节点
docker node

查看集群中的节点
docker node ls

将manager角色降级为worker
docker node demote 主机名

将worker角色升级为manager
docker node promote 主机名

查看节点的详细信息,默认json格式
docker node inspect 主机名

查看节点信息平铺格式
docker node inspect --pretty 主机名

查看运行的一个或多个及节点任务数,默认当前节点
docker node ps

从swarm中删除一个节点
docker node rm 主机名

更新一个节点
docker node update

对节点设置状态(“active”正常|“pause”暂停|“drain”排除自身work任务)
docker node update --availability

管理敏感数据存储
docker secret

服务栈,栈的形式,一般作为编排使用,格式与docker compose相同。
docker stack

通过.yml文件指令部署
docker stack deploy -c 文件名.yml 编排服务名

查看编排服务
docker stack ls
docker stack 不支持使用参数

作为集群的管理
docker swarm

初始化一个swarm
docker swarm init

指定初始化ip地址节点
docker swarm init --advertise-addr 管理端IP地址

去除本地之外的所有管理器身份
docker swarm init --force-new-cluster

将节点加入swarm集群,两种加入模式manager与worker
docker swarm join

工作节点加入管理节点需要通过join-token认证
docker swarm join-token

重新获取docker获取初始化命令
docker swarm join-token worker

离开swarm
docker swarm leave

对swarm集群更新配置
docker swarm update

服务栈,栈的形式,一般作为编排使用,格式与docker compose相同。
docker stack

通过.yml文件指令部署
docker stack deploy -c 文件名.yml 编排服务名

服务管理
docker service

创建一个服务
docker service create

创建的副本数
docker service create --replicas 副本数

指定容器名称
docker service create --name 名字

每次容器与容器之间的更新时间间隔。
docker service create --update-delay s秒

更新时同时并行更新数量,默认1
docker service create --update-parallelism 个数

任务容器更新失败时的模式,(“pause”停止|”continue“继续),默认pause。
docker service create --update-failure-action 类型

每次容器与容器之间的回滚时间间隔。
docker service create --rollback-monitor 20s

回滚故障率如果小于百分比允许运行
docker service create --rollback-max-failure-ratio .数值(列“.2”为%20)

添加网络
docker service create --network 网络名

创建volume类型数据卷
docker service create --mount type=volume,src=volume名称,dst=容器目录

创建bind读写目录挂载
docker service create --mount type=bind,src=宿主目录,dst=容器目录

创建bind只读目录挂载
docker service create --mount type=bind,src=宿主目录,dst=容器目录,readonly

创建dnsrr负载均衡模式
docker service create --endpoint-mode dnsrr 服务名

创建docker配置文件到容器本地目录
docker service create --config source=docker配置文件,target=配置文件路径

创建添加端口
docker service create --publish 暴露端口:容器端口 服务名

查看服务详细信息,默认json格式
docker service inspect

查看服务信息平铺形式
docker service inspect --pretty 服务名

查看服务内输出
docker service logs
列出服务
docker service ls
列出服务任务信息
docker service ps    

查看服务启动信息
docker service ps 服务名

过滤只运行的任务信息
docker service ps -f "desired-state=running" 服务名

删除服务
docker service rm
缩容扩容服务
docker service scale

扩展服务容器副本数量
docker service scale 服务名=副本数

更新服务相关配置
docker service update

容器加入指令
docker service update --args “指令” 服务名

更新服务容器版本
docker service update --image 更新版本 服务名

回滚服务容器版本
docker service update --rollback 回滚服务名

添加容器网络
docker service update --network-add 网络名 服务名

删除容器网络
docker service update --network-rm 网络名 服务名

服务添加暴露端口
docker service update --publish-add 暴露端口:容器端口 服务名

移除暴露端口
docker service update --publish-rm 暴露端口:容器端口 服务名

修改负载均衡模式为dnsrr
docker service update --endpoint-mode dnsrr 服务名

添加新的配置文件到容器内
docker service update --config-add 配置文件名称,target=/../容器内配置文件名 服务名

创建配置文件
docker config create nginx2_config nginx2.conf

删除旧配置文件
docker service update --config-rm ce_nginx_config 服务名

添加新配置文件到服务
docker service update --config-add src=nginx2_config,target=/etc/nginx/nginx.conf ce_nginx

删除配置文件
docker service update --config-rm 配置文件名称 服务名

强制重启服务
docker service update --force 服务名


标题:Docker swarm 部署
作者:LeeOcean
地址:https://www.leiocean.com/articles/2022/07/06/1657099612852.html

    评论
    0 评论
avatar

取消