欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Docker 三剑客

发布时间:2024/9/3 编程问答 38 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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

[root@server1 ~]# vim .bashrc PS1='[\u@\h \W$(__docker_machine_ps1)]\$ '

退出当前shell,重新登陆即可生效

[root@server1 ~]# docker-machine env server2 [root@server1 ~]# eval $(docker-machine env server2)


我们再次使用docker时,显示的就是server2的images

搭建不同版本的
在真机上搭建yum源放到http的默认发布目录中

[root@Sun_s html]# vim docker-ce.repo [docker] name=docker-ce baseurl=http://172.25.1.250/docker-ce gpgcheck=0 [root@Sun_s html]# wget https://get.docker.com [root@Sun_s html]# mv index.html get-docker.sh 修改下图圈出内容 yum源位置


[root@server1 ~]# docker-machine create --driver generic --engine-install-url "http://172.25.1.250/get-docker.sh" --generic-ip-address 172.25.1.3 server3 [root@server1 ~]# eval $(docker-machine env server3)

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


在真机上测试负载均衡情况

查看健康检查

[root@server1 compose]# docker-compose stop web1


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 ls

[root@server1 ~]# docker load -i myapp.tar [root@server1 ~]# docker load -i visualizer.tar [root@server1 ~]# docker tag ikubernetes/myapp:v1 myapp:v1

实现负载均衡

节点升降级

[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

[root@server4 ~]# docker swarm join --token SWMTKN-1-5worodwhvojzfl76gmoi3n68encf8ha3gaze302aus6yw7g382-c2d31ke2j0ncdiijo1efgpffu 172.25.1.2:2377

[root@server2 docker]# vim daemon.json {"registry-mirrors": ["https://reg.westos.org"] } [root@server2 docker]# scp daemon.json server4:/etc/docker/ [root@server2 docker]# scp daemon.json server3:/etc/docker/ [root@server2 docker]# scp -r certs.d/ server4:/etc/docker/ [root@server2 docker]# vim /etc/hosts

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=6

3. 实现业务滚动更新

[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:latest

4.执行

[root@server2 compose]# docker stack deploy -c docker-compose.yml my_cluster

5.查看效果

[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 三剑客的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。