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--->管理--->克隆

docker swarm 服务启动不了 docker swarm 重启服务_docker

一直下一步,再克隆类型的时候选择创建完整克隆

docker swarm 服务启动不了 docker swarm 重启服务_docker_02

名称和位置自己选择

docker swarm 服务启动不了 docker swarm 重启服务_docker_03

点击完成,稍等几分钟

(3)查看环境

xhell连接四台linux

docker swarm 服务启动不了 docker swarm 重启服务_重启_04

docker swarm 服务启动不了 docker swarm 重启服务_docker swarm 服务启动不了_05

(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一致性算法

 

docker swarm 服务启动不了 docker swarm 重启服务_Docker_06

2.2搭建Docker Swarm集群

(1)docker swarm 帮助命令

docker swarm --help

docker swarm 服务启动不了 docker swarm 重启服务_Docker_07

(2)初始化节点

我这里将192.168.188.180作为管理节点,然后进行初始化

docker swarm init --adversise-addr 192.168.188.180

docker swarm 服务启动不了 docker swarm 重启服务_docker swarm 服务启动不了_08

(3)docker-2加入集群

docker swarm join --token SWMTKN-1-37mj0bpx6nq8u5d452zryhxhzqdcqnrxb53sfhezrs7lvqvvmf-3g05ke0bisboi35gizd690zc9 192.168.188.180:2377

docker swarm 服务启动不了 docker swarm 重启服务_Docker_09

docker-1节点查看 docker-2节点已经加入

docker node ls

docker swarm 服务启动不了 docker swarm 重启服务_重启_10

(4)查看工作节点的token(创建工作节点时需要用到生成的命令)

docker swarm join-token worker

docker swarm 服务启动不了 docker swarm 重启服务_docker swarm 服务启动不了_11

(5)查看管理节点token(创建管理节点时需要用到生成的命令)

docker swarm join-token manager

docker swarm 服务启动不了 docker swarm 重启服务_Docker_12

(6)docker-3加入工作节点

docker swarm 服务启动不了 docker swarm 重启服务_重启_13

(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 swarm 服务启动不了 docker swarm 重启服务_docker swarm 服务启动不了_14

docker node ls

docker swarm 服务启动不了 docker swarm 重启服务_docker_15

 

3.Raft协议

Raft协议:保证大多数节点存活才可以使用用。只要>1,集群必须大于三台

3.1将docker-1宕机

systemctl stop docker
systemctl stop docker.socket
docker node ls

docker swarm 服务启动不了 docker swarm 重启服务_docker_16

(2)查看docker-4

不可用

docker swarm 服务启动不了 docker swarm 重启服务_重启_17

 

重启后集群恢复

systemctl start docker

docker swarm 服务启动不了 docker swarm 重启服务_重启_18

 

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

创建服务、动态扩展服务、动态更新服务

docker swarm 服务启动不了 docker swarm 重启服务_docker_19

4.2创建服务docker service create

(1)创建nginx服务

docker service create -p 8888:80 --name ngx01 nginx

docker swarm 服务启动不了 docker swarm 重启服务_docker_20

(2)查看服务ngx01

docker service ps ngx01

docker swarm 服务启动不了 docker swarm 重启服务_重启_21

(3)显示有关一个或多个服务的详细信息

docker service inspect ngx01

docker swarm 服务启动不了 docker swarm 重启服务_docker_22

(4)查看容器

在docker-1上可以看到ngx01容器

docker ps

docker swarm 服务启动不了 docker swarm 重启服务_docker_23

在docker-2、docker-3、docker-4上进行查看不到ngx01容器

docker swarm 服务启动不了 docker swarm 重启服务_docker swarm 服务启动不了_24

docker swarm 服务启动不了 docker swarm 重启服务_Docker_25

 

docker swarm 服务启动不了 docker swarm 重启服务_重启_26

4.3docker service update --replicas

动态更新3个nginx副本

(1)docker service update --replicas 3 ngx01

docker swarm 服务启动不了 docker swarm 重启服务_重启_27

(2)查看docker-1、docker-2、docker-3、docker-4

docker swarm 服务启动不了 docker swarm 重启服务_Docker_28

docker swarm 服务启动不了 docker swarm 重启服务_重启_29

docker swarm 服务启动不了 docker swarm 重启服务_重启_30

docker swarm 服务启动不了 docker swarm 重启服务_docker_31

4.4扩缩容到10个nginx服务

(1)docker service update --replicas 10 ngx01

docker swarm 服务启动不了 docker swarm 重启服务_重启_32

(2)查看docker-1、docker-2、docker-3、docker-4

docker ps

docker swarm 服务启动不了 docker swarm 重启服务_docker swarm 服务启动不了_33

docker swarm 服务启动不了 docker swarm 重启服务_重启_34

docker swarm 服务启动不了 docker swarm 重启服务_docker swarm 服务启动不了_35

docker swarm 服务启动不了 docker swarm 重启服务_docker swarm 服务启动不了_36

4.5docker service scale 

(1)docker service scale ngx01=5

docker swarm 服务启动不了 docker swarm 重启服务_Docker_37

(2)查看docker-1、docker-2、docker-3、docker-4

docker ps

docker swarm 服务启动不了 docker swarm 重启服务_docker swarm 服务启动不了_38

docker swarm 服务启动不了 docker swarm 重启服务_docker swarm 服务启动不了_39

docker swarm 服务启动不了 docker swarm 重启服务_重启_40

docker swarm 服务启动不了 docker swarm 重启服务_docker_41

 

5.概念总结

5.1概念

swarm

集群的管理和编号。docker可以初始化一个swarm集群,其他节点可以加入。(管理、工作者)

Node

就是一个docker节点。多个节点就组成了一个网络集群。(管理、工作者)

Service

任务,可以在管理节点或者工作节点来运行。

Task

容器内的命令,细节任务!

 

docker swarm 服务启动不了 docker swarm 重启服务_Docker_42

 

 

docker swarm 服务启动不了 docker swarm 重启服务_docker_43

 

 

docker swarm 服务启动不了 docker swarm 重启服务_重启_44


(1)docker service inspect ngx01

docker swarm 服务启动不了 docker swarm 重启服务_重启_45

 

 "PublishMode": "ingress"

ingress:特殊的Overlay网络!负载均衡的功能!

Overlay可以使多个相互,ping不同的机器联通并变成一个整体

docker swarm 服务启动不了 docker swarm 重启服务_docker_46

5.3Docker Stack

docker-compose 单机部署项目!

Docker Statck 集群部署

单机模式下,我们可以使用 Docker Compose 来编排多个服务,而 Docker Swarm 只能实现对单个服务的简单部署。

通过 Docker Stack 我们只需对已有的 docker-compose.yml 配置文件稍加改造就可以完成 Docker 集群环境下的多服务编排

docker swarm 服务启动不了 docker swarm 重启服务_docker swarm 服务启动不了_47

5.4Docker Secret

什么是secret

  • 用户名密码
  • SSH Key
  • TLS认证
  • 任何不想让别人看到的数据

secret management

  • 存在swarm manager 节点raft database里面
  • secret 可以assign给一个service,这个service就能看到这个secret
  • 在container内部secret看起来像文件,但是实际是在内存中

docker secret --help

docker swarm 服务启动不了 docker swarm 重启服务_docker_48

5.5Docker Config

Docker Config

  • Configs 是安装在容器的文件系统中,而不是使用 RAM 磁盘。
  • Configs 可以随时添加或删除,服务可以共享一个配置。
  • Configs 可以与 Environments 或 Labels 结合使用,以获得最大的灵活性。

docker swarm 服务启动不了 docker swarm 重启服务_重启_49