准备工作:四台服务器,vutrl,四台机器安装docker
安装文件
yum -y install gccyum -y install gcc-c++
移除旧版本
yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
安装需要的软件包
yum install -y yum-utils
设置镜像仓库
yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
安装docker
yum install -y docker-ce docker-ce-cli containerd.io #-y说明 一路yes下去
启动docker
systemctl start docker
Swarm集群搭建
工作模式

搭建集群
初始化节点docker swarm init,docker swarm join 加入一个节点
[root@guest ~]# docker swarm init --advertise-addr 45.76.192.12

加入管理节点
#获取令牌docker swarm join-token manager #获取manager节点的命令docker swarm join-token worker #获取worker节点的命令[root@guest ~]# docker swarm join --token SWMTKN-1-5lna9tp8dxpfq2xqyomp1mr822pgrywnj1ny8vt57l4252smmb-5u1nohfsa1li1x6m6pnoghfiy 45.76.192.12:2377

如果出现错误
Error response from daemon: rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing dial tcp 45.76.192.12:2377: connect: no route to host"
这是因为防火墙没有关闭(同一安全组下的不用担心这个问题)
解决方案:
[root@guest ~]# systemctl stop firewalld.service[root@guest ~]# systemctl disable firewalld.service
查看节点,两主两从

Raft协议
Raft:保证大多数节点存活才可以用,只要>1,集群至少大于3台(三个主节点,>1台管理节点存活),才可以使用,这就是高可用。
其他
docker run #容器启动,不具备扩缩容器docker service #服务,具备扩缩容器,滚动更新#集群,弹性扩缩容[root@guest ~]# docker service create -p 8888:80 --name my-nginx nginxl6zdyv77gt357ixgcr5bmbtocoverall progress: 1 out of 1 tasks1/1: running [==================================================>]verify: Service converged[root@guest ~]# docker service update --replicas 3 my-nginx[root@guest ~]# docker service lsID NAME MODE REPLICAS IMAGE PORTSl6zdyv77gt35 my-nginx replicated 3/3 nginx:latest *:8888->80/tcp[root@guest ~]##服务,集群中的任意的节点都可以访问,服务可以有多个副本动态扩缩容实现高可用。

update和scale差不多都可以实现扩缩容。
# 移除[root@guest ~]# docker service rm my-nginxmy-nginx
总结
swarm
集群的管理和编号。docker可以初始化一个swarm集群,其他节点可以加入(管理者、工作者)
Node
就是一个docker节点。多个节点就组成了一个网络集群(管理者、工作者)
Service
任务,可以在管理节点或者工作节点来运行。核心,用户访问。
Task
容器内的命令,细节任务
具体的流程
命令-->管理-->api-->调度-->工作节点(创建Task容器维护创建)
服务副本与全局服务
调整service以什么方式运行
--mode stringService mode(replicated or global)(default "replicated")docker service create --mode replicated --name mytom tomcat:7 默认的docker service create --mode global --name haha alpine ping baidu.com# 场景:日志收集每一个节点都有自己的日志收集器,过滤,把所有日志最终再传给日志中心服务监控,状态性能
Docker Stack
Docker-compose 单机部署项目
Docker Stack 部署,集群部署
# 单机docker-compose up -d wordpress.yaml#集群部署docker stack deploy wordpress.yaml
Docker Secret
安全!配置密码,证书!

Docker Config


文章转载自爱德华的奇妙生活,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




