docker集群

Docker

版本12前无集群

版本12后有集群

——docker swarm 集成docker engine

——k8s google:未来科技

编排能力:可以做service也可以允许单个容器

node:

1、manager:将任务分解给worker执行。(管理)

可以有多个,但是只会有一个leader

2、work:定期更新状态给manger来维护集群

docker service 定义在node节点上执行的任务。

vi /etc/hosts

192.168.43.214 node1

192.168.43.192 node2

192.168.43.196 node3

docker swarm init --advertise-addr 192.168.43.214  ——本机ip

ssh-keygen

ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.43.192

ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.43.196

在两台主机上输入

docker swarm join

    --token SWMTKN-1-1mbjsk77f67d0y934o5qu1h8i5givmhnov3nkfe6u7jz8deg2b-2d6hhjnotndl18ltdip5nhxr2

192.168.43.214:2377

报错可能是防火墙没清除

docker info  ——显示docker集群的详细信息

docker node promote node2  ——将work转成manager

docker swarm leave -f   ——删除集群

全部开启路由转发:net.ipv4.ip_forward = 1

scp /etc/sysctl.conf root@node2:/root/   //修改完swar这台电脑直接用scp就ok

ssh远程两台主机刷新sysctl

docker pull registry:2  --下载仓库的镜像

docker node ls   ——查看节点

 mkdir /opt/data/registry -p

docker run -itd -p 5000:5000 --restart=always -v /opt/data/registry/:/var/lib/registry --name registry registry:2

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

修改:

ExecStart=/usr/bin/dockerd --insecure-registry 192.168.17.138:5000 

systemctl daemon-reload

systemctl restart docker.service

scp /usr/lib/systemd/system/docker.service root@node2:/usr/lib/systemd/system/docker.service  ——将docker的主配置文件发送到其他的两个节点上

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

docker pull httpd    ——下载一个httpd镜像

docker tag httpd 192.168.43.214:5000/httpd   ——给httpd镜像打包

docker push 192.168.43.214:5000/httpd    ——上传至私有仓库

docker search visualizer    ——查看visualizer有哪些版本

 docker pull dockersamples/visualizer   ——下载版本

docker network create -d overlay ov_net1   ——创建一个overlay网络

docker network ls   ——查看网卡

 docker tag  dockersamples/visualizer 192.168.43.214:5000/visualizer  ——打包dockersamples/visualizer镜像

docker push 192.168.43.214:5000/visualizer  ——上传至私有仓库

docker run -itd -p 8888:8080 -e HOST=192.168.43.214 -e PORT=8080 -v /var/run/docker.sock:/var/run/docker.sock --name visualizer 192.168.43.214:5000/visualizer

http://192.168.43.214:8888/   ——就可以看到视图了

docker service create --replicas 1 --network ov_net1 --name web1 -p 8000:80 -p 10122:22 192.168.43.214:5000/httpd   ——复制一份httpd镜像

docker service create --replicas 2 --network ov_net1 --name web2 -p 8001:80 -p 10123:22 192.168.43.214:5000/httpd   ——复制2份httpd镜像

docker service create --mode global --network ov_net1 --name web3 -p 8002:80 -p 10124:22 192.168.43.214:5000/httpd   ——全局创建镜像

docker exec -it web2.1.z4bpp1lpttvn11kfvac68fd6s sh  ——进入某一个容器

docker service rm  镜像名字 //删除全局创建的

原文地址:https://www.cnblogs.com/guarderming/p/9455810.html