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 镜像名字 //删除全局创建的