·首先准备好环境。六台服务器,可以自己搭建6台虚拟机,或者购买6台云服务器,使用按流量计费,学习测试完,就删掉费用也不是很高。
4台安装docker
使用xshell连接到目标服务器,通过 工具-》发送键输入到所有会话 可以对多个会话进行同步操作
安装步骤
1、官方安装参考手册
2、确定你是CentOS7 及以上版本
3、yum安装gcc相关环境(确保虚拟机可以上网)
yum -y install gcc
yum -y install gcc-c++
4、卸载旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine\
5、安装需要的软件包
yum install -y yum-utils
6、设置镜像仓库
# 正确推荐使用国内的
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
7、更新yum软件包索引
yum makecache fast
8、安装 Docker CE
yum -y install docker-ce docker-ce-cli containerd.io
9、启动Docker
systemctl start docker
10、测试命令
docker version
docker run hello-world
docker images
11、配置镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xl0am7ew.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
工作模式
There are two types of nodes: managers and workers.
If you haven’t already, read through the swarm mode overview and key concepts.
搭建集群
docker swarm init --advertise-addr 本机ip
初始化节点 docker swarm init
docker swarm join 加入一个节点
# 获取令牌
docker swarm join-token manager
docker swarm join-token worker
现在我们在第一台朱继忠初始化了一个节点。会打印出 加入节点的命令行,
我们可以使用获取令牌的命令,来获取加入节点的命令,manager 生成的是管理节点加入,worker 生成的是工作节点加入
# 生成工作节点令牌
[root@linux01 ~]# docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-34jwql1bv5bkmi4vxr6qrhjyr8w806khz45c0b16sdk95yf342-8qll0izt5vdbmyirabuanrjhq 192.168.50.205:2377
# 生成管理节点令牌
[root@linux01 ~]# docker swarm join-token manager
To add a manager to this swarm, run the following command:
docker swarm join --token SWMTKN-1-34jwql1bv5bkmi4vxr6qrhjyr8w806khz45c0b16sdk95yf342-egakva0fdm5m3tbxqrwdxge7u 192.168.50.205:2377
在其他服务器使用令牌加入节点
# 工作节点加入
[root@linux03 ~]# docker swarm join --token SWMTKN-1-34jwql1bv5bkmi4vxr6qrhjyr8w806khz45c0b16sdk95yf342-8qll0izt5vdbmyirabuanrjhq 192.168.50.205:2377
This node joined a swarm as a worker.
# 管理节点加入
[root@linux05 ~]# docker swarm join --token SWMTKN-1-34jwql1bv5bkmi4vxr6qrhjyr8w806khz45c0b16sdk95yf342-egakva0fdm5m3tbxqrwdxge7u 192.168.50.205:2377
This node joined a swarm as a manager.
加入完成后我们可以在管理节点他通过 docker node ls 命令来查看节点信息
leader和Reachable 都是管理节点
Raft 协议
目前我们设置了3主3从, 如果只搭建两个管理点就不是高可用,两个管理节点的情况下,如果有管理节点宕机整个集群就不可用了。但是三个管理节点,只要有一台及以上管理节点存活 集群仍然可用
弹性、扩缩容,集群
单机使用 docker run 启动一个容器 docker-compose up 启动一个项目
集群:swarm docker service
容器 => 服务
容器=> 服务 => 副本
redis服务 => 10个副本(同时开启10个redis容器)
体验:创建服务、动态扩展服务、动态更新服务
灰度发布:金丝雀发布
docker run # 容器启动 不具有扩缩容器
docker service # 服务 具有扩缩容器,滚动更新
查看服务
动态扩缩容 replicas
下边为扩至 10个nginx集群
也可以缩减容器
scale 同样也是可以做扩缩容
swarm
集群的管理和编排。docker可以初始化一个swarm集群,其他节点可以加入(管理、工作)
node
就是一个docker节点。多个节点就组成一个网络集群(管理、工作)
service
任务,可以在管理节点或者工作节点来运行,核心
task
容器内的命令,细节任务
命令->管理->api->调度->工作节点(创建task容器维护创建)