Docker 三剑客_portainer agent

为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。

本份面试集锦涵盖了

  • 174 道运维工程师面试题
  • 128道k8s面试题
  • 108道shell脚本面试题
  • 200道Linux面试题
  • 51道docker面试题
  • 35道Jenkis面试题
  • 78道MongoDB面试题
  • 17道ansible面试题
  • 60道dubbo面试题
  • 53道kafka面试
  • 18道mysql面试题
  • 40道nginx面试题
  • 77道redis面试题
  • 28道zookeeper

总计 1000+ 道面试题, 内容 又全含金量又高

  • 174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  - ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg

networks:
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.cfg

global
maxconn 65535
stats socket /var/run/haproxy.stat mode 600 level admin
log 127.0.0.1 local0
uid 200
gid 200
#chroot /var/empty
daemon

defaults
mode http
log global
option httplog
option dontlognull
monitor-uri /monitoruri
maxconn 8000
timeout client 30s
retries 2
option redispatch
timeout connect 5s
timeout server 5s
stats uri /status

The public ‘www’ address in the DMZ

frontend public
bind *: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 dynamic
balance roundrobin
server app1 web1:80 check inter 1000
server app2 web2:80 check inter 1000



[root@server1 compose]# docker-compose up
[root@server1 compose]# docker-compose start
[root@server1 compose]# docker-compose ps


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210128173446551.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210128173206120.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 在真机上测试负载均衡情况  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210128173636416.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 查看健康检查



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


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210128173807228.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 Docker Compose 常用命令




|  |  |
| --- | --- |
| Build: | 构建或重新构建服务。 |
| kill: | 强制停止服务容器。 |
| logs: | 查看服务的输出。 |
| port: | 打印绑定的公共端口。 |
| ps: | 列出所有容器。 |
| pull: | 拉取服务所需镜像。 |
| rm: | 删除停止的服务容器。 |
| up: | 构建并启动容器。 |


## 2.docker swam


初始化



[root@server1 harbor]# docker swarm init


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130102255851.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 根据提示在其他docker节点上执行命令:  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2021013010240530.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130102417186.png)  
 查看swarm集群节点



[root@server1 ~]# docker node ls


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130102449113.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)



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


实现负载均衡  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130101913385.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130102121591.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


### 节点升降级



[root@server1 ~]# docker node promote server2
[root@server1 ~]# docker node demote server1


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130110840171.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)



[root@server1 ~]# docker swarm leave
[root@server2 ~]# docker node rm server1


![在这里插入图片描述](https://img-blog.csdnimg.cn/2021013011194141.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


加入一个新的节点  
 重新配置一台server4  
 加入集群,注意现在的managerserver2,要写server2的ip



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


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130111953832.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)



[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


![在这里插入图片描述](https://img-blog.csdnimg.cn/2021013011281640.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


### 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


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130133056359.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


### 3. 实现业务滚动更新



[root@server2 ~]# docker service update --image myapp:v2 --update-parallelism 2 --update-delay 5s myweb



[root@server4 ~]# systemctl stop docker.service


当把server4down掉的话,业务会自动跳到其他的server上  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130134817137.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


## 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相关命令:


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130233314940.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


参考官方地址[集群部署]( )  
 在部署之前需要先清除刚才所做的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:v1
networks:
- mynet
deploy:
replicas: 2
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
visualizer:
image: visualizer
ports:
- “8080:8080”
stop_grace_period: 1m30s
volumes:
- “/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


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130232442240.png)


### 5.查看效果



[root@server2 compose]# docker service ls


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130233026343.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)  
 我们在监控页面查看  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210130232618465.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


## 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 ##对镜像位置进行修改即可



### 最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

### 资料预览

给大家整理的视频资料:

![](https://img-blog.csdnimg.cn/img_convert/f67ee4503a3d164b8c63c0b34bf18ddf.png)

给大家整理的电子书资料:

  

![](https://img-blog.csdnimg.cn/img_convert/3f30e2a2d027939140edc28ad8edaf25.png)



**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618635766)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

### 资料预览

给大家整理的视频资料:

[外链图片转存中...(img-JIHRF2Sn-1715715987079)]

给大家整理的电子书资料:

  

[外链图片转存中...(img-1Sy9Gn1n-1715715987079)]



**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618635766)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值