前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >时隔一年才想起来答案的面试题

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

作者头像
小闫同学啊
发布2020-02-19 11:34:15
4870
发布2020-02-19 11:34:15
举报
文章被收录于专栏:小闫笔记小闫笔记

"

两个人的交往,最后都会经历这样一个时期:两人的话没有以前多了,双方对彼此失去了新鲜感,从而认为对方没有以前爱自己了,甚至考虑要结束这段感情,并疑惑着别人三年四年甚至十年的感情是如何度过的?请回想一下你和爸爸妈妈之间,现在还会有超多说不完的话吗?是不是只剩下了对父母唠叨的嫌弃?两人从陌生人到类似于亲人,话少很正常,因为彼此之间已经熟悉到不能再熟悉,这难道不应该是感觉到幸福的点吗?珍惜那个从陌生人到现在虽然嫌弃仍然陪在身边的他(她)吧,这已经是天赐的缘分,不要在失去之后才觉得可惜。同样,也不要试图去将对方改造成你理想中恋人的模样。两个独立的个体,只有在彼此理解,彼此包容,彼此欣赏,共同奋斗进步的情况下才会搀扶走到人生的终点。

—— 小闫同学

"

今天玩游戏的时候,突然想到了以前面试被问的一个小问题,特此记录,仅供参考更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

1.关于docker故障排除

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

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

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

面试官:说一下重启命令

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

代码语言:javascript
复制
# 重启 docker
systemctl restart docker
# 重启某容器
docker restart 容器id或者容器name

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

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

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

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

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

傻小闫:好的

代码语言:javascript
复制
systemctl status docker

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

代码语言:javascript
复制
docker ps -a

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

代码语言:javascript
复制
docker logs 容器id或者容器名称
# 查看指定容器最后100行日志
docker logs --tail=100 容器id或者容器名称

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

代码语言:javascript
复制
docker top 容器id或者容器名称

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

代码语言:javascript
复制
docker stats 容器id或者容器名称

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

代码语言:javascript
复制
docker inspect 容器id或者容器名称

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

2.关于docker网络

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

代码语言:javascript
复制
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颗星

首先需要创建一个网络:

代码语言:javascript
复制
docker network create 网络名称

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

代码语言:javascript
复制
docker run -it --network 创建的网络名称 其他参数设置 镜像名称 ...

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

代码语言:javascript
复制
docker run --help
      ...
      --network network                Connect a container to a network
      --network-alias list             Add network-scoped alias for the container
      ...

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈技术精选 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.关于docker故障排除
      • 2.关于docker网络
        • 2.1 网桥
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档