时隔一年才想起来答案的面试题

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 时隔一年才想起来答案的面试题

1.关于docker故障排除

很久之前在 XX航空 的面试中,面试官曾问过一个问题,大体情况如下(具体描述因为时间关系已经记不清了):

面试官:当一个容器发生故障导致无法连接,你会如何操作?

傻小闫:重启 docker服务容器 ???

面试官:说一下重启命令

傻小闫:下面即重启服务与容器的相关命令:


# 重启 dockersystemctl restart docker# 重启某容器docker restart 容器id或者容器name

面试官:如果 docker 命令不是通过 systemctl 管理的,怎么办?如果执行重启命令之后仍然无法重启呢?

傻小闫:无论 docker 怎样进行安装,都会有相关重启命令吧?要是重启一次不管用,那就多重启两次!常言道:没有什么是重启解决不了的问题,如果有,就重启两次~

面试官:傻小闫,out更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

傻小闫:我会先查看 docker启停状态,然后再排查该容器的相关信息,比如查看该容器的启停状态,查看该容器的 日志 以及 进程 相关信息,最后根据具体情况进行具体分析作出对应相关操作。

面试官:那么写一下查看 docker启停状态 相关命令,还有查看容器的 日志 以及 进程 的相关命令吧。

傻小闫:好的


systemctl status docker

上述命令会显示服务的运行状态以及一些简单的运行信息。接下来是查看所有容器的启停状态命令:


docker ps -a

然后是查看容器在 stdout/stderr 的日志相关命令:

docker logs 容器id或者容器名称
# 查看指定容器最后100行日志
docker logs --tail=100 容器id或者容器名称

如果容器运行正常,可以查看指定容器中运行的进程信息,进一步判断原因:


docker top 容器id或者容器名称

另外还有一个查看容器性能监控的命令:


docker stats 容器id或者容器名称

对了,最后再说一个查看容器配置信息和运行时状态的命令:


docker inspect 容器id或者容器名称

面试官微微点头,进行下一轮的问题轰炸...更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

2.关于docker网络

docker 中容器如何与外界进行通讯?当然是配置网络了,下面是最常用的一行命令,指定映射:


docker run -d -p [宿主机ip]:[宿主机端口]:[容器端口] --name [容器名字] [镜像名称]

该命令会根据指定镜像创建一个容器,并指定容器的名称、宿主机映射到容器的地址和端口、容器对外绑定的端口。创建完成之后,宿主机就可以通过刚才宿主机指定的地址和端口访问容器指定的服务了(比如容器是一个 nginx ,我们将宿主机的 192.168.0.33:1314 映射到容器的 80 端口,宿主机访问 192.168.0.33:1314 即可访问 nginx 服务)。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

端口的范围:0 ~ 65535

2.1 网桥

宿主机与 docker 某容器之间可以进行通讯之后,那么容器之间该如何通讯呢?

1.仍然可以通过上面提到的方式,使用宿主机的地址和端口进行访问。但是这样做有一个弊端,那就是只能访问容器暴露出的端口所提供的服务,十分有限。(推荐指数:2颗星

2.可以使用容器的 ip 进行访问,但是每次重启容器之后,地址的变化该如何是好?(推荐指数:1颗星

3.通过 link 建立连接。首先这种方式官方不推荐,所以也没有选择的必要,大家简单了解即可。我们需要有一个容器A(其他容器想要访问该容器),有一个容器B(该容器要去访问容器A),容器B在创建(启动)时需要使用参数 --link 进行设置。然后进入容器B,直接通过参数 link 指定的名字去访问容器A即可。注意一点:不可反向操作!即容器A无法 ping 通容器B。(推荐指数:1颗星

而且此操作如果希望容器A重启后,容器B的链接仍然生效,还需要额外操作,修改配置文件,十分繁琐,不推荐。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

上述的手段都不推荐,那么直接引出今日主角登场『桥接网络』(推荐指数:5颗星

首先需要创建一个网络:


docker network create 网络名称

然后在启动容器时,使其加入网络中:


docker run -it --network 创建的网络名称 其他参数设置 镜像名称 ...

我们简单来看一下官方提供了其他的什么参数:

docker run --help
      ...
      --network network                Connect a container to a network
      --network-alias list             Add network-scoped alias for the container
      ...

可以看到有两个参数,按照官方描述,一个参数负责将容器链接到给定的网桥上,一个参数是为该容器添加一个网络访问的别名。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

将需要通讯的容器在创建(启动容器)时,通过参数设置都添加到同一网络桥接上即可完成容器之间的通讯。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
存储 测试技术
(笔试)华为2021秋招面试真题!(内含详细解题思路)
<p>  前言:</p> <p>  文章内容主要介绍了华为2021秋招笔试题(小结),小编觉得挺不错的,现在特意在此分享给大家,也给大家做个参考。(部分代码,用图片的方式呈现出来,方便各位收藏与很好的观看)</p> <p>  内容如下:</p> <p>  一、全量字符集与已占用字符集</p> <p>  输入描述:</p>
972 0
|
存储 算法 安全
数字马力面经和答案解析!社招岗
数字马力面经和答案解析!社招岗
536 0
数字马力面经和答案解析!社招岗
|
算法 Java 测试技术
面试题精选:求根号2简单?高级算法你肯定不会(1)
开始大家都以为这个算法是游戏的开发者Carmack发现的,但后来调查发现,该算法在这之前就在计算机图形学的硬件与软件领域中有所应用,如SGI和3dfx就曾在产品中应用此算法,所以至今都无人知晓这个算法是谁发明的。
58 1
|
算法 Java C语言
面试题精选:求根号2简单?高级算法你肯定不会(2)
这篇博客从立题到完成经历了好几天的时间,期间整理思路、编码、绘图、查阅资料、修改完善总累计耗时近8h。写作不易,如果文章对你有用欢迎素质三连(点赞、收藏加关注) 。
62 1
|
6月前
|
存储 安全 API
精选8道ES高频面试题和答案,后悔没早点看。
不要再干巴巴的背诵八股文了,一定要结合具体场景回答面试问题!
127 0
|
人工智能 算法 Java
拼多多2019春招编程题答案
拼多多2019春招编程题答案
|
缓存 JavaScript 前端开发
头条秋招面试题以及答案
头条秋招面试题以及答案
98 0
|
SQL 消息中间件 缓存
阿里云大数据开发三面面经,已过,面试题已配答案
阿里云大数据开发三面面经,已过,面试题已配答案
1137 1
|
运维 测试技术
【面试题】看看本期上榜的被问最多的软测面试题和答案吧~
【面试题】看看本期上榜的被问最多的软测面试题和答案吧~
|
测试技术
【面试题】又一批新鲜出炉的软测面试题及答案
【面试题】又一批新鲜出炉的软测面试题及答案