Docker 三剑客
生活随笔
收集整理的這篇文章主要介紹了
Docker 三剑客
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
鏈接: docker-machine 提取碼: 6itu
[root@server1 ~]# mv docker-machine-Linux-x86_64-0.16.1 /usr/local/bin/docker-machine [root@server1 ~]# chmod +x /usr/local/bin/docker-machine [root@server1 ~]# ssh-keygen [root@server1 ~]# ssh-copy-id server2: [root@server1 ~]# docker-machine create --driver generic --generic-ip-address=172.25.1.2 server2 [root@server1 ~]# yum install bash-* -y [root@server1 ~]# cd /etc/bash_completion.d將下面幾個組件放置這個目錄下
鏈接: .bash文件 提取碼: gi5f
退出當前shell,重新登陸即可生效
[root@server1 ~]# docker-machine env server2 [root@server1 ~]# eval $(docker-machine env server2)
我們再次使用docker時,顯示的就是server2的images
搭建不同版本的
在真機上搭建yum源放到http的默認發布目錄中
1.Docker-compose
[root@server1 ~]# mkdir compose [root@server1 ~]# cd compose/ [root@server1 compose]# vim docker-compose.yml version: "3.9" services:web1:image: nginxnetworks:- mynetvolumes:- ./web1:/usr/share/nginx/htmlweb2:image: nginxnetworks:- mynetvolumes:- ./web2:/usr/share/nginx/htmlhaproxy:image: haproxynetworks:- mynetports:- "80:80"volumes:- ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfgnetworks:mynet: [root@server1 compose]# mkdir haproxy [root@server1 compose]# mkdir web1 [root@server1 compose]# mkdir web2 [root@server1 compose]# echo web1 >web1/index.html [root@server1 compose]# echo web2 >web2/index.html [root@server1 compose]# cd haproxy/ [root@server1 haproxy]# ls [root@server1 haproxy]# vim haproxy.cfgglobalmaxconn 65535stats socket /var/run/haproxy.stat mode 600 level adminlog 127.0.0.1 local0uid 200gid 200#chroot /var/emptydaemondefaultsmode httplog globaloption httplogoption dontlognullmonitor-uri /monitorurimaxconn 8000timeout client 30sretries 2option redispatchtimeout connect 5stimeout server 5sstats uri /status# The public 'www' address in the DMZ frontend publicbind *:80 name clear#bind 192.168.1.10:443 ssl crt /etc/haproxy/haproxy.pem#use_backend static if { hdr_beg(host) -i img }#use_backend static if { path_beg /img /css }default_backend dynamic# The static backend backend for 'Host: img', /img and /css. backend dynamicbalance roundrobinserver app1 web1:80 check inter 1000server app2 web2:80 check inter 1000 [root@server1 compose]# docker-compose up [root@server1 compose]# docker-compose start [root@server1 compose]# docker-compose ps
在真機上測試負載均衡情況
查看健康檢查
Docker Compose 常用命令
| Build: | 構建或重新構建服務。 |
| kill: | 強制停止服務容器。 |
| logs: | 查看服務的輸出。 |
| port: | 打印綁定的公共端口。 |
| ps: | 列出所有容器。 |
| pull: | 拉取服務所需鏡像。 |
| rm: | 刪除停止的服務容器。 |
| up: | 構建并啟動容器。 |
2.docker swam
初始化
[root@server1 harbor]# docker swarm init
根據提示在其他docker節點上執行命令:
查看swarm集群節點
實現負載均衡
節點升降級
[root@server1 ~]# docker node promote server2 [root@server1 ~]# docker node demote server1 [root@server1 ~]# docker swarm leave [root@server2 ~]# docker node rm server1加入一個新的節點
重新配置一臺server4
加入集群,注意現在的managerserver2,要寫server2的ip
2.加入本地私有倉庫
[root@server1 harbor]# docker-compose start [root@server1 ~]# docker tag myapp:v1 reg.westos.org/library/myapp:v1 [root@server1 ~]# docker push reg.westos.org/library/myapp:v1 [root@server2 ~]# docker service rm my_cluster 然后把各個節點上已經拉取的鏡像刪除掉 [root@server2 ~]# docker service create --name myweb --replicas 3 -p 80:80 myapp:v1 [root@server2 docker]# docker service scale myweb=63. 實現業務滾動更新
[root@server2 ~]# docker service update --image myapp:v2 --update-parallelism 2 --update-delay 5s myweb [root@server4 ~]# systemctl stop docker.service當把server4down掉的話,業務會自動跳到其他的server上
3.docker stack部署集群
基于 Docker Swarm 之上來完成應用的部署,面向大規模場景下的多服務部署和管理。
1.docker stack與docker-compose的區別:
- Docker stack不支持“build”指令,它是需要鏡像是預先已經構建好的, 所以docker-compose更適合于開發場景;
- Docker Compose是一個Python項目,使用Docker API規范來操作容器。
- Docker Stack功能包含在Docker引擎中,是swarm mode的一部分。
- Docker stack不支持基于第2版寫的docker-compose.yml ,也就是version版本至少為3。然而Docker Compose對版本為2和3的 文件仍然可以處理;
- docker stack把docker compose的所有工作都做完了,因此docker stack將占主導地位。
2.docker stack相關命令:
參考官方地址集群部署
在部署之前需要先清除剛才所做的service
3.編寫yml文件
[root@server2 ~]# mkdir compose [root@server2 ~]# cd compose/ [root@server2 compose]# vim docker-compose.yml version: "3.9" services:web:image: myapp:v1networks:- mynetdeploy:replicas: 2update_config:parallelism: 2delay: 10srestart_policy:condition: on-failurevisualizer:image: visualizerports:- "8080:8080"stop_grace_period: 1m30svolumes:- "/var/run/docker.sock:/var/run/docker.sock"deploy:placement:constraints:- "node.role==manager" networks:mynet:將監控的鏡像也上傳至本地私有倉庫,方便使用,因為yml編寫的時候直接從本地倉庫拉取
[root@server1 ~]# docker tag dockersamples/visualizer reg.westos.org/library/visualizer:latest [root@server1 ~]# docker push reg.westos.org/library/visualizer:latest4.執行
[root@server2 compose]# docker stack deploy -c docker-compose.yml my_cluster5.查看效果
[root@server2 compose]# docker service ls
我們在監控頁面查看
4.Portainer可視化
1.部署portainer
鏈接: portainer 目錄 提取碼: zzct
[root@server1 ~]# cd portainer/ [root@server1 portainer]# ls portainer-agent-stack.yml portainer-agent.tar portainer.tar [root@server1 portainer]# docker load -i portainer-agent.tar [root@server1 portainer]# docker load -i portainer.tar 將這些鏡像統一放到我們搭建的本地私有倉庫中 [root@server1 portainer]# docker tag portainer/agent:latest reg.westos.org/library/agent:latest [root@server1 portainer]# docker tag portainer/portainer:latest reg.westos.org/library/portainer:latest [root@server1 portainer]# docker push reg.westos.org/library/agent:latest [root@server1 portainer]# docker push reg.westos.org/library/portainer:latest [root@server1 portainer]# scp portainer-agent-stack.yml server2:~/ [root@server2 ~]# vim portainer-agent-stack.yml ##對鏡像位置進行修改即可 [root@server2 ~]# docker stack deploy -c portainer-agent-stack.yml portainer ##執行
在web 界面查看 172.25.1.2:9000 可以看到登錄界面 首次登錄需要設置賬號,密碼
總結
以上是生活随笔為你收集整理的Docker 三剑客的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker安全
- 下一篇: Kubernetes集群部署