1.环境准备
1.1常用命令
1.2vmware克隆
2.Docker Swarm
2.1Docker Swarm介绍
2.2搭建Docker Swarm集群
3.Raft协议
3.1将docker-1宕机
4.Docker Swarm 弹性、扩缩容、集群
4.1查看docker service
4.2创建服务docker service create
4.3docker service update --replicas
4.4扩缩容到10个nginx服务
4.5docker service scale
5.概念总结
5.1概念
5.2网络
5.3Docker Stack
5.4Docker Secret
5.5Docker Config
前言
此搭建环境对电脑配置有一定的要求,vmware搭建了4台centos7
官网地址:https://docs.docker.com/engine/
1.环境准备
1.1常用命令
systemctl start docker 打开docker
systemctl stop docker 关闭docker服务
sudo systemctl daemon-reload 守护进程重启
systemctl restart docker 重启docker服务
systemctl stop firewalld.service 关闭防火墙
firewall-cmd --zone=public --list-ports 查看开放的端口
vim /etc/sysconfig/network-scripts/ifcfg-ens33 #修改静态ip
service network restart #重启网络服务
docker stop $(docker ps -a -q) 停止所有的container
docker rm $(docker ps -a -q) 删除所有container
docker rmi $(docker images -q) 要删除全部image
1.2vmware克隆
(1)首先需要安装一台centos7虚拟机,为了快捷,剩下的进行克隆即可
(2)克隆
docker-1--->管理--->克隆
一直下一步,再克隆类型的时候选择创建完整克隆
名称和位置自己选择
点击完成,稍等几分钟
(3)查看环境
xhell连接四台linux
(4)检查防火墙
Docker Swarm默认2377端口
要么关闭防火墙,要么放行2377端口,设置放行完2377端口,需要重启后生效
firewall-cmd --zone=public --add-port=2377/tcp --permanent #放行2377端口
firewall-cmd --state #查看防火墙状态
firewall-cmd --reload
2.Docker Swarm
2.1Docker Swarm介绍
官网地址:https://docs.docker.com/engine/swarm/
管理节点
工作节点
Raft一致性算法
2.2搭建Docker Swarm集群
(1)docker swarm 帮助命令
docker swarm --help
(2)初始化节点
我这里将192.168.188.180作为管理节点,然后进行初始化
docker swarm init --adversise-addr 192.168.188.180
(3)docker-2加入集群
docker swarm join --token SWMTKN-1-37mj0bpx6nq8u5d452zryhxhzqdcqnrxb53sfhezrs7lvqvvmf-3g05ke0bisboi35gizd690zc9 192.168.188.180:2377
docker-1节点查看 docker-2节点已经加入
docker node ls
(4)查看工作节点的token(创建工作节点时需要用到生成的命令)
docker swarm join-token worker
(5)查看管理节点token(创建管理节点时需要用到生成的命令)
docker swarm join-token manager
(6)docker-3加入工作节点
(7)docker-4加入管理节点
一开始加入docker-1节点会失败,原因是作为主节点需要开放2377端口
firewall-cmd --zone=public --add-port=2377/tcp --permanent
firewall-cmd --reload
docker swarm join --token SWMTKN-1-37mj0bpx6nq8u5d452zryhxhzqdcqnrxb53sfhezrs7lvqvvmf-biiz6y5d3lktavopnuuvy91st 192.168.188.180:2377
docker node ls
3.Raft协议
Raft协议:保证大多数节点存活才可以使用用。只要>1,集群必须大于三台
3.1将docker-1宕机
systemctl stop docker
systemctl stop docker.socket
docker node ls
(2)查看docker-4
不可用
重启后集群恢复
systemctl start docker
4.Docker Swarm 弹性、扩缩容、集群
docker脱离编排没有任何意义
告别docker ruin使用docker-compose up启动一个项目
集群:swarm docker service
容器=>服务
容器=>服务=>副本
redis服务=>10个副本
docker run 容器启动!不具有扩缩容器
docker service 服务!具有扩展容器!滚动更新!
4.1查看docker service
(1)docker service --help
创建服务、动态扩展服务、动态更新服务
4.2创建服务docker service create
(1)创建nginx服务
docker service create -p 8888:80 --name ngx01 nginx
(2)查看服务ngx01
docker service ps ngx01
(3)显示有关一个或多个服务的详细信息
docker service inspect ngx01
(4)查看容器
在docker-1上可以看到ngx01容器
docker ps
在docker-2、docker-3、docker-4上进行查看不到ngx01容器
4.3docker service update --replicas
动态更新3个nginx副本
(1)docker service update --replicas 3 ngx01
(2)查看docker-1、docker-2、docker-3、docker-4
4.4扩缩容到10个nginx服务
(1)docker service update --replicas 10 ngx01
(2)查看docker-1、docker-2、docker-3、docker-4
docker ps
4.5docker service scale
(1)docker service scale ngx01=5
(2)查看docker-1、docker-2、docker-3、docker-4
docker ps
5.概念总结
5.1概念
swarm
集群的管理和编号。docker可以初始化一个swarm集群,其他节点可以加入。(管理、工作者)
Node
就是一个docker节点。多个节点就组成了一个网络集群。(管理、工作者)
Service
任务,可以在管理节点或者工作节点来运行。
Task
容器内的命令,细节任务!
(1)docker service inspect ngx01
"PublishMode": "ingress"
ingress:特殊的Overlay网络!负载均衡的功能!
Overlay可以使多个相互,ping不同的机器联通并变成一个整体
5.3Docker Stack
docker-compose 单机部署项目!
Docker Statck 集群部署
单机模式下,我们可以使用 Docker Compose 来编排多个服务,而 Docker Swarm 只能实现对单个服务的简单部署。
通过 Docker Stack 我们只需对已有的 docker-compose.yml 配置文件稍加改造就可以完成 Docker 集群环境下的多服务编排
5.4Docker Secret
什么是secret
- 用户名密码
- SSH Key
- TLS认证
- 任何不想让别人看到的数据
secret management
- 存在swarm manager 节点raft database里面
- secret 可以assign给一个service,这个service就能看到这个secret
- 在container内部secret看起来像文件,但是实际是在内存中
docker secret --help
5.5Docker Config
Docker Config
- Configs 是安装在容器的文件系统中,而不是使用 RAM 磁盘。
- Configs 可以随时添加或删除,服务可以共享一个配置。
- Configs 可以与 Environments 或 Labels 结合使用,以获得最大的灵活性。