docker swarm

Docker Swarm

Docker Swarm集群的构建

1.修改主机名

node1(192.168.88.28) node2(192.168.88.4) node3(192.168.88.133)

[root@node1 ~]# vim /etc/hosts

添加:

192.168.88.28 node1 192.168.88.4 node2 192.168.88.133 node3

ping一下网络可以ping通

 

scp /etc/hosts root@192.168.88.4:/etc/

scp /etc/hosts root@192.168.88.133:/etc/ #将/etc/hosts下修改的主机名远程拷贝到另外两台主机(现在可以在另外两台主机分别ping别的主机查看网络是否能通)

 

修改主机名:

hostname node1

bash #使其生效

hostname node2

bash #使其生效

hostname node3

bash #使其生效



2.设置时区

!注意三台主机的时区不等错误,命令date查看时区,如果发现时区不同,需要修修改时区后才能进行后续操作

修改时区:

timedatectl list-timezones |grep Shanghai #查找中国时区的完整名称

Asia/Shanghai

timedatectl set-timezone Asia/Shanghai #设置时区

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #或者设置软连接

 

3.设置免密登录

生成密钥:ssh-keygen

把密钥复制到其他主机:

ssh-copy-id -i /root/.ssh/id-rsa.pub root@192.168.88.4

ssh-copy-id -i /root/.ssh/id-rsa.pub root@192.168.88.133

三台主机现在都已完成免密登录

 

4.尽可能保持三台主机的docker版本一致,避免以下不必要的麻烦

docker -v #查看docker版本

 

5.[root@node1 ~]# docker swarm init --advertise-addr 192.168.88.28 #初始化节点,将ip地址公布

 

执行此明后,会出现一个提示:现在想作为一个worker端加入到集群的时候,运行以下命令,将此命令复制下来,在第二台主机上运行,即可加入docker swarm群集

[root@node2 ~]# docker swarm join --token SWMTKN-1-57y3pxr8hqrfxjxrefhbat0cdnb4tphwunsv3u5ym9028yxspn-4ogiferuwhhbbxg5t6deijdkz 192.168.88.28:2377

提示这个node作为worker已经加入到群集。

 

在node1初始化节点后提示要想作为manager加入集群运行以下命令:

[root@node1 ~] docker swarm join-token manager #我们将node1作为manager加入群集

mananger加入后,再次提示tocken随机值(有效时间大概在24小时左右)

 

[root@node3 ~] docker swarm join --token SWMTKN-1-57y3pxr8hqrfxjxrefhbat0cdnb4tphwunsv3u5ym9028yxspn-4m1x97s9s8m2hu0s6s463ytdn 192.168.88.28:2377 #将命令赋值到node3上

 

现在node3也同样以manager节点加入到集群中。

 

 

docker info #可以查看节点详细信息

docker node ls #在manager上可以查看简要的node节点信息(在worker节点上运行时不成立,因为不是manager)

 

6.manager和node相互转换

manager节点和worker节点是可以互相转换的

例如:manager节点负载压力过大,现在希望worker节点提升为manager节点

命令:

[root@node1 ~]# docker node promote node2

Node node2 promoted to a manager in the swarm.

降级命令:

[root@node1 ~]# docker node demote node2 ​ Manager node2 demoted in the swarm.

docker node ls #查看

 

7.搭建本地仓库

准备工作:

开启路由转发

[root@node1 ~]# vim /etc/sysctl.conf

添加net.ipv4.ip_forward = 1

sysctl -p #使其生效

scp /etc/sysctl.conf root@192.168.88.4:/etc/

scp /etc/sysctl.conf root@192.168.88.133:/etc/

到这两台主机上执行sysctl -p使其生效

 

正式搭建:

[root@node1 ~]# docker pull registry:2

拉取成功后创建一个映射目录:[root@node1 ~]# mkdir -p /opt/data/registry

[root@node1 ~]# docker run -itd -p 5000:5000 --restart always -v /opt/data/registry:/var/lib/registry --name registry registry:2

[root@node1 ~]# curl 192.168.88.28:5000/_cataalog

目前没有存的数据

打开私有仓库配置文件,在其配置文件中指定私有仓库位置

vim /usr/lib/systemd/system/docker.service

 

systemctl daemon-reload

systemctl restart docker

 

scp /usr/lib/systemd/system/docker.service root@192.168.88.4:/usr/lib/systemd/system/

scp /usr/lib/systemd/system/docker.serviceroot@192.168.88.133:/usr/lib/systemd/system/

拷贝过去后,每个主机执行读取、重启

systemctl daemon-reload systemctl restart docker

 

[root@node1 ~]# docker tag d4e60c8eb27a 192.168.88.28:5000/httpd

[root@node1 ~]# docker tag busybox:latest 192.168.88.28:5000/busybox

 

[root@node1 ~]# docker push 192.168.88.28:5000/httpd 将打包的景象push

 

在node2上拉去刚才在node1上打包好的httpd私有镜像

 

8.docker swarm图形界面

[root@node1 ~]# docker search visualizer

[root@node1 ~]# docker pull docker.io/dockersamples/visualizer

 

下载好镜像后,传到私有仓库,防止镜像损坏。

[root@node1 ~]# docker tag docker.io/dockersamples/visualizer:latest 192.168.88.28:5000/visualizer

[root@node1 ~]# docker push 192.168.88.28:5000/visualizer #传到私有仓库

 

[root@node1 ~]# docker run -itd -p 8888:8080 -e HOST=192.168.88.28 -e PORT=8080 -v /var/run/docker.sock:/var/run/docker.sock --name visualizer 192.168.88.28:5000/visualizer #运行这个容器

打开浏览器:http://192.168.88.28:8888/

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值