linux运维面试题: (第三部分)三

本章是关于docker的面试题于实战(实战=当你正在面试时,回答问题的方式)

注:(很多题都是通过网上搜索总结出来的,可能在一部分内发现自己写的东西:如有不满请联想我删除,谢谢)

一. docker镜像

镜像相关
1、如何批量清理临时镜像文件?
可以使用sudo docker rmi $(sudo docker images -q -f danging=true)命令
2、如何查看镜像支持的环境变量?
使用sudo docker run IMAGE env
3、本地的镜像文件都存放在哪里
于Docker相关的本地资源存放在/var/lib/docker/目录下,其中container目录存放容器信息,graph目录存放镜像信息,aufs目录下存放具体的镜像底层文件。
4、构建Docker镜像应该遵循哪些原则?
整体远侧上,尽量保持镜像功能的明确和内容的精简,要点包括:

尽量选取满足需求但较小的基础系统镜像,建议选择debian:wheezy镜像,仅有86MB大小

清理编译生成文件、安装包的缓存等临时文件

安装各个软件时候要指定准确的版本号,并避免引入不需要的依赖

从安全的角度考虑,应用尽量使用系统的库和依赖

使用Dockerfile创建镜像时候要添加.dockerignore文件或使用干净的工作目录

容器相关
1、容器退出后,通过docker ps 命令查看不到,数据会丢失么?
容器退出后会处于终止(exited)状态,此时可以通过 docker ps -a 查看,其中数据不会丢失,还可以通过docker start 来启动,只有删除容器才会清除数据。
2、如何停止所有正在运行的容器?
使用docker kill $(sudo docker ps -q)
3、如何清理批量后台停止的容器?
使用docker rm $(sudo docker ps -a -q)
4、如何临时退出一个正在交互的容器的终端,而不终止它?
按Ctrl+p,后按Ctrl+q,如果按Ctrl+c会使容器内的应用进程终止,进而会使容器终止。
5、很多应用容器都是默认后台运行的,怎么查看它们的输出和日志信息?
使用docker logs,后面跟容器的名称或者ID信息
6、使用docker port 命令映射容器的端口时,系统报错Error: No public port ‘80’ published for …,是什么意思?
创建镜像时Dockerfile要指定正确的EXPOSE的端口,容器启动时指定PublishAllport=true
7、可以在一个容器中同时运行多个应用进程吗?
一般不推荐在同一个容器内运行多个应用进程,如果有类似需求,可以通过额外的进程管理机制,比如supervisord来管理所运行的进程
8、如何控制容器占用系统资源(CPU,内存)的份额?
在使用docker create命令创建容器或使用docker run 创建并运行容器的时候,可以使用-c|–cpu-shares[=0]参数来调整同期使用CPU的权重,使用-m|–memory参数来调整容器使用内存的大小。
仓库相关
1、仓库(Repository)、注册服务器(Registry)、注册索引(Index)有何关系?
首先,仓库是存放一组关联镜像的集合,比如同一个应用的不同版本的镜像,注册服务器是存放实际的镜像的地方,注册索引则负责维护用户的账号,权限,搜索,标签等管理。注册服务器利用注册索引来实现认证等管理。
-2 、从非官方仓库(如:dl.dockerpool.com)下载镜像的时候,有时候会提示“Error:Invaild registry endpoint https://dl.docker.com:5000/v1/…”?
Docker 自1.3.0版本往后以来,加强了对镜像安全性的验证,需要手动添加对非官方仓库的信任。
DOCKER_OPTS=”–insecure-registry dl.dockerpool.com:5000”
重启docker服务
配置相关
1、Docker的配置文件放在那里。如何修改配置?
Ubuntu系统下Docker的配置文件是/etc/default/docker,CentOS系统配置文件存放在/etc/sysconfig/docker
-2、如何更改Docker的默认存储设置?
Docker的默认存放位置是/var/lib/docker,如果希望将Docker的本地文件存储到其他分区,可以使用Linux软连接的方式来做。
Docker与虚拟化
1、Docker与LXC(Linux Container)有何不同?
LXC利用Linux上相关技术实现容器,Docker则在如下的几个方面进行了改进:
移植性:通过抽象容器配置,容器可以实现一个平台移植到另一个平台;
镜像系统:基于AUFS的镜像系统为容器的分发带来了很多的便利,同时共同的镜像层只需要存储一份,实现高效率的存储;
版本管理:类似于GIT的版本管理理念,用户可以更方面的创建、管理镜像文件;
仓库系统:仓库系统大大降低了镜像的分发和管理的成本;
周边工具:各种现有的工具(配置管理、云平台)对Docker的支持,以及基于Docker的Pass、CI等系统,让Docker的应用更加方便和多样化。
2 、Docker与Vagrant有何不同?
两者的定位完全不同
Vagrant类似于Boot2Docker(一款运行Docker的最小内核),是一套虚拟机的管理环境,Vagrant可以在多种系统上和虚拟机软件中运行,可以在Windows。Mac等非Linux平台上为Docker支持,自身具有较好的包装性和移植性。
原生Docker自身只能运行在Linux平台上,但启动和运行的性能都比虚拟机要快,往往更适合快速开发和部署应用的场景。
3、开发环境中Docker与Vagrant该如何选择?
Docker不是虚拟机,而是进程隔离,对于资源的消耗很少,单一开发环境下Vagrant是虚拟机上的封装,虚拟机本身会消耗资源。
Other FAQ
1、Docker能在非Linux平台(Windows+MacOS)上运行吗?
可以
2 、如何将一台宿主机的docker环境迁移到另外一台宿主机?
停止Docker服务,将整个docker存储文件复制到另外一台宿主机上,然后调整另外一台宿主机的配置即可
3、Docker容器创建后,删除了/var/run/netns 目录下的网络名字空间文件,可以手动恢复它:

查看容器进程ID,比如1234 sudo docker inspect --format=’{{. State.pid}}’ $container_id 1234 # 到proc目录下,把对应的网络名字空间文件链接到/var/run/netns,然后通过正常的系统命令查看操作容器的名字空间。

1、Docker 和虚拟机有啥不同?
Docker 是轻量级的沙盒,在其中运行的只是应用,虚拟机里面还有额外的系统。
2、Docker 安全么?
Docker 利用了 Linux 内核中很多安全特性来保证不同容器之间的隔离,并且通过签名机制来对镜像进行验证。大量生产环境的部署证明,Docker 虽然隔离性无法与虚拟机相比,但仍然具有极高的安全性。
3、如何清理后台停止的容器?
可以使用 sudo docker rm $sudo( docker ps -a -q) 命令。
4、如何查看镜像支持的环境变量?
可以使用 docker run IMAGE env 命令。
5、当启动容器的时候提示:exec format error? 如何解决问题
检查启动命令是否有可执行权限,进入容器手工运行脚本进行排查。
6、本地的镜像文件都存放在哪里?
与 Docker 相关的本地资源都存放在/var/lib/docker/目录下,其中container目录存放容器信息,graph目录存放镜像信息,aufs目录下存放具体的内容文件。
7、如何退出一个镜像的bash,而不终止它?
按 Ctrl-p Ctrl-q。
8、退出容器时候自动删除?
使用 –rm 选项,例如 sudo docker run –rm -it ubuntu
9、怎么快速查看本地的镜像和容器?
可以通过docker images来快速查看本地镜像;通过docker ps -a快速查看本地容器。

二. 实战

如何选择工具

一、对于服务器安全和监控,能推荐一些开源工具吗?监控好像也就nagios/cacti/zabbix,还有其他可以推荐的吗?安全方面如何监控?

监控工具各有各侧重点,zabbix同时支持snmp和自带agent,也支持自定义模板,在大部分场景下都是不错的选择。

另外,别把zabbix视为只能监控服务器信息,通过自定义的模板,也可以监控业务层面的指标。

安全监控分为主动检测,如Tenable Nessus,及IDS/IPS。

二、Linux运维中,系统版本都用什么版本?CentOS还是Ubuntu?为什么会选择这个版本?有做哪些测试?相比来说有啥优势?为什么会选择这个版本?

目前我们以CentOS为主。

不同Linux分支各有各特点,比如Ubuntu新版本发布较快,如果追求内核版本升级速度的话,可以考虑。

CentOS一直是我们的主要使用的Linux发行版,主要考虑到它的稳定性以及熟悉程度最高。

CentOS 一直是我们的主要 Linux 发行版,稳定性以及熟悉程度最高。

选择某个发行版时,要考虑它的生态,比如上下游的支持,还有一点,就是运维人员招聘的方便程度,国内熟悉 CentOS 的稍多一些。

三、对于使用缓存有什么推荐吗?一般就Redis/Codis。还有哪些比较好的开源软件?

对于类似session-id这样的可以非持久存储的数据,可以考虑用memcached,使用一致性哈希算法分布式存储。

四、做自动化发布,除Jenkins持续集成工具,还有哪些好用的工具呢?

目前所知道的,一般都是Hudson或者Jenkins,后者是前者分支出来的。

这些工具有丰富的插件,灵活使用这些插件才是关键所在。

五、问一个MySQL问题,三个版本(MySQL官方版、Percona Server以及MariaDB)建议使用哪个版本,原因?

我们一般使用的是官方版本。

主要是考虑到软件的支持和生态。

六、服务器日志收集和分析有什么好工具推荐?ELK有一点复杂,不太会用,有其他的推荐?

ELK确实是目前使用较广泛的日志收集和分析的工具。

虽然有些学习成本,但还是值得去研究和尝试的。

运维中遇到的问题

一、LVS和HAPROXY后端服务器规模可以做到什么程度,比如有多少个应用,多少台后端服务器?

这个取决于应用的类型,在实际业务场景下,需关注LVS等负载均衡器本身的连接数、PPS数据及延迟。

如果后端吞吐量比较大,可考虑LVS的DR模式。一般情况,负载均衡器不太会成为瓶颈。

二、对于涉及多个平台Unix/Linux/Windows的统一管理(认证,配置,服务)有什么好的解决方案或者思路么?

Unix/Linux支持OpenLDAP认证,这和Windows下的AD是兼容的。

配置和服务可考虑下开源的通用产品,比如Ansible或者Salt。

三、CentOS 6要如何做系统和网络优化?/etc/sysctl.conf中的这个参数net.ipv4.tcp_max_tw_buckets = 6000要如何设置,是越多越好吗?设置成16000?如net.ipv4.tcp_max_tw_buckets = 16000?

对于系统优化来说,要有针对性的。tcp_max_tw_buckets针对的是time wait bucket,如果系统中timewait状态较多,可考虑net.ipv4.tcp_tw_reuse和net.ipv4.tcp_tw_recycle这2个值调整。

另外,如果使用长连接对于减少该状态的连接数有效。

四、如有100多台服务器,大部分都是在提供业务的服务器,如何升级?除了停机维护,现在有什么比较好的解决方案吗?

如果本身的业务切分比较好,例如采用无状态的微服务等架构,可通过前端负载均衡器进行灰度升级。

如果应用做的不好,只有单台这种,或者集中式数据库,就比较麻烦了。

自动化运维相关工程师思维

一、可以说下什么是自动化运维,如何才算服务器做了自动化运维?包括哪些?自动化发布或是有问题可以回滚?

运维自动化是个仁者见仁智者见智的概念。我的理解运维自动化要打通从代码开发完到正式上线的所有环节,包括版本构建、打通自动测试、自动化上线以及自动化监控。

在这一个大命题下,可根据自己工作环境和自动化水平的不同,选择一两个痛点开始进行自动化实践。最后形成完整体系。

二、请问你主导运维自动化平台的功能设计和实施,是通过Python开发管理工具?另外,你们是重新开发呢,还是根据Saltstack之类的进行二次开发。

底层使用SSH协议建立服务器管理通道,上层使用PHP开发管理界面及封装一些常用操作,比如密码修改、脚本下发和执行等。

Docker与运维结合使用

一、Docker化对运维影响深远吗?

Docker化对运维有影响,它带来的影响包括:持续交付、微服务及DevOps理念的冲击。作为运维,我们要拥抱这一个变化,通过不断学习和实践来迎接这些挑战。

二、为何国内没有一家成熟Docker方案公布细节呢?

Docker还是个新生事物,各家使用的场景和模式有所不同,而且会有一些二次开发的管理系统和调度系统。

技术对比
一、作为运维人员,Python这样的脚本在进行系统管理和监控的时候相比Shell有怎样的优势?

作为高级编程语言,Python有非常丰富的库,包括核心库和第三方库,很多时候不需要自己造轮子;

相比较Shell,它有更好的控制力、重试机制,比如对Socket设置超时等等。

二、想问下只有一台服务器,运行多个应用,是用LVS做负载好还是Nginx?差别大吗?

你说的后端应用是基于HTTP或者HTTPS的吗?如果是的,且吞吐量不大的情况下,用Nginx即可;如果非HTTP或HTTPS的TCP应用,建议用LVS;如果HTTP或者HTTPS吞吐量特别大的情况下,用LVS DR模式。

与备份相关的一些问题

一、1000台机器规模,备份系统应该做到什么程度?

1000台机器,需要区分业务类型,如果类型单一,备份就比较好做了。如果类型较多,那么要考虑的地方包括:数据库更新的频率(全备+增量备份?还是只用全备)及数据备份的大小、数据集中归档要求。

二、备份怎么做的?上百T的图片、附件有什么高雅的备份方案?

在线备份这块,可考虑使用erasure coding算法,在增加一定可靠性的能力下,不至于导致备份存储的成本过高。同时需要考虑离线备份,比如磁带。

linux运维面试题:第三部分相关推荐

  1. 6道常见Linux运维面试题讲解!

    学习完Linux技术之后,接下来我们就需要面临找工作的事情.谈到找工作,很多小伙伴肯定好奇,面试官会问些什么问题?本为为大家汇总了一些常见Linux运维面试题,希望能够给大家带来帮助,祝你们面试通过! ...

  2. Linux 运维面试题20道

    Linux 运维面试题 1.为什么我们要使用tomcat,类似的软件有哪些? 因为Apache仅支持静态网站,不能解析Java.Jsp,它们服务端口也不同Apache端口80 tomcat端口8080 ...

  3. linux运维面试题:第一部分

    linux运维面试题: (第一部分)三 在生活中跳槽或者换萌新找工作时,总会显得没有水平,从而不能在人群中脱颖而出那么,如何在跳槽中,从容的应对考官的面试呢,(小宇)在这里总结了一点面试题供大家分享: ...

  4. linux运维面试题:第二部分

    linux运维面试题: (第二部分)三 iptables防火墙部分面试题 (仅供参考) 注:(面试题是通过本人在网上搜索总结出来的,如果您看到文章内有,属于自己创造的部分,请联系我,谢谢) 你听说过L ...

  5. 2020年Linux运维面试题都不会,怎么拿Offer?

    阅读目录 1.什么是运维?什么是游戏运维? 2.在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的? 3.现在给你三百台服务器,你怎么对他们进行管理? 4.简述raid0 raid ...

  6. 常见Linux运维面试题分享

    学习Linux进入工作岗位的过程必定是要经过面试.与其他技术岗位相同.Linux运维也要经理人力面试和技术面试.对于初级运维工程师面试题目相对也很简单,但是同样有很多朋友在简单的问题上犯错.下面为大家 ...

  7. linux上安装shell编辑器与linux运维面试题

    分两个部分 一.安装B-shell解释器 安装cygwin  Eclipse要找到安装的bin路径 https://cygwin.com 二.安装编辑器shellEd 下载可以得到一个:net.sou ...

  8. 珍藏版linux运维笔试题

    常见的linux运维笔记题及面试题,全部都列在这里了,做完后可以在后面留言,或者直接发给我,成绩优秀且做的最快的前十名,赠送技术书籍一本. l  Linux操作系统知识: 1.       Linux ...

  9. linux运维面试题大厂,大厂Linux运维面试题详解

    大厂面试题: 网络基础类面试题 01.Linux运维经典面试题_网络基础-视频介绍 02.Linux运维经典面试题_网络基础-面试题1 03.Linux运维经典面试题_网络基础-面试题2 04.Lin ...

最新文章

  1. JQuery新浪1630个表情插件
  2. 【OpenCV 4开发详解】图像修复
  3. 【机器学习】快速入门简单线性回归 (SLR)
  4. 红帽急了:新年的 RHEL 将有低成本或免费版
  5. 利用salt防范MD5字典攻击
  6. 【5G NR】ZP CSI-RS资源配置
  7. Windows 2000 下载
  8. postgresql 数据库 Encoding、Collate、Ctype
  9. kafka生产者发送消息提升效率策略设置
  10. html embed自动播放,embed嵌入多个优酷视频并自动播放
  11. 免费Web 托管公司遭黑客攻击 1350万用户数据泄露
  12. android8沉浸式状态栏,Android 沉浸式状态栏
  13. Android自定义SeekBar,带开始值结束值和Thumb上方滑动的Text
  14. Intellij IDEA如何添加注释并且修改注释样式
  15. 手机通讯录如何转移 QQ通讯录
  16. CDOJ 1355 柱爷与三叉戟不得不说的故事(枚举子集状压dp)
  17. NIS(网络信息服务)的功能及使用
  18. “倾倾计“第4期 | 科技创新,泛设计行业的跨界共生
  19. scrapy+selenium爬取五个外国新闻网站关于“中国“的新闻,并分析
  20. 设置不了谷歌浏览器为默认浏览器

热门文章

  1. 人人都能成为程序员?不,我要告诉你:“ 你不适合做程序员”
  2. android+收不到短信广播,短信广播接收器一直收不到广播,但是有成功注册了Receiver了...
  3. 京东方HR270WU1-200工业液晶屏规格参数 27寸医疗液晶屏
  4. Oracle 表已经有数据 修改字段类型,把varchar2类型变成date类型
  5. mongodb更改字段类型
  6. 为什么这么火?用 Python 爬取并分析了《雪中悍刀行》数据,发现了其中的秘密
  7. 人社部公布2022年“最缺工”的100个职业排行
  8. Linux 常用的压缩方式
  9. 快来试试一行java程序看cpu核心数
  10. 网络同步在游戏历史中的发展变化(六)—— 优化技术总结(完结篇)