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集群部署