首页 > 系统相关 >Linux运维工程师面试题(8)

Linux运维工程师面试题(8)

时间:2023-09-06 20:01:16浏览次数:43  
标签:容器 面试题 p1 运维 exec cmd Linux entry docker

Linux运维工程师面试题(8)

祝各位小伙伴们早日找到自己心仪的工作。 持续学习才不会被淘汰。 地球不爆炸,我们不放假。 机会总是留给有有准备的人的。 加油,打工人!

1 docker 的网络类型,使用场景

  • none:在使用none模式后,Docker容器不会进行任何网络配置,没有网卡、没有IP也没有路由,因此默认无法与外界通信,需要手动添加网卡配置IP等,所以极少使用。
  • bridge:默认模式。可以和外部网络之间进行通信,通过SNAT访问外网,使用DNAT可以让容器被外部主机访问,所以此模式也称为NAT模式。
  • host:此模式由于直接使用宿主机的网络无需转换,网络性能最高,但是各容器内使用的端口不能相同,适用于运行容器端口比较固定的业务。
  • container:使用此模式创建的容器需指定和一个已经存在的容器共享一个网络,而不是和宿主机共享网,新创建的容器不会创建自己的网卡也不会配置自己的IP,而是和一个被指定的已经存在的容器共享IP和端口范围,因此这个容器的端口不能和被指定容器的端口冲突,除了网络之外的文件系统、进程信息等仍然保持相互隔离,两个容器的进程可以通过lo网卡进行通信。

2 CMD 和 ENTRYPOINT 的区别

No ENTRYPOINT ENTRYPOINT exec_entry p1_entry ENTRYPOINT [“exec_entry”, “p1_entry”]
No CMD error, not allowed /bin/sh -c exec_entry p1_entry exec_entry p1_entry
CMD [“exec_cmd”, “p1_cmd”] exec_cmd p1_cmd /bin/sh -c exec_entry p1_entry exec_entry p1_entry exec_cmd p1_cmd
CMD exec_cmd p1_cmd /bin/sh -c exec_cmd p1_cmd /bin/sh -c exec_entry p1_entry exec_entry p1_entry /bin/sh -c exec_cmd p1_cmd

3 怎么减小 dokcer 镜像的大小

  1. 尽量选取满足需求但较小的基础系统镜像;
  2. 清理编译生成的文件、安装包的缓存等临时文件;
  3. 安装各个软件时候要指定准确的版本号、并避免引入不需要的依赖;
  4. 减少镜像层数,合并相同的命令,比如RUN命令;
  5. 使用 Dockerfile 创建镜像时候要添加 dockerignore 文件或使用干净的工具目录;

4 现有一个正在运行的容器,容器中没有 ps、top、netstat、ss、ip、lsof等命令,怎么查看容器内进程及pid和打开的端口

可以使用 docker ps 命令查看容器内进程的和port。也可以使用 docker top 命令查看容器内的相关进程,包括它们的PID和其它信息。可以使用docker port命令查看容器暴露的端口。

也可以进入容器。在/proc目录下查看进程pid和其他信息。 下面是/proc/pid目录中可能包含的文件和目录的一些例子:

  • cmdline:该文件包含了进程启动时的完整命令行参数。
  • cwd:该文件包含了进程当前的工作目录。
  • environ:该文件包含了进程环境变量列表。
  • exe:该文件是进程的可执行文件的符号链接,可以通过它来找到进程的可执行文件。
  • fd:该目录包含了进程打开的文件列表,每个文件都以符号链接的形式出现在该目录下。

5 如何临时退出⼀个正在交互的容器的终端,而不终止它?

同时按三个键,ctrl+p+q。如果按Ctrl+c 会使容器内的应用进程终止、进而会使容器终止。

6 如果只有镜像或者在运行的容器,没有 dockerfile,现在有需求需要借助这个镜像或容器重写 dockerfile,怎么查看这个镜像或容器之前的构建过程。

使用docker history或者docker image history命令进行查看。也可以使用docker inspect命令查看相关信息。

7 COPY 和 ADD 的区别

  1. COPY 命令会将文件的所有元数据(如所有者、权限等)都复制到容器中,而ADD则不会。这意味着在使用ADD时,您可能需要手动设置文件的元数据。
  2. ADD 命令支持在拷贝文件时自动解压缩tar文件,而 COPY 不支持。
  3. ADD 命令支持将 URL 作为源文件,并自动下载并将其复制到容器中。

8 制作镜像方式

  • docker commit # 通过修改现有容器,将之手动构建为镜像
  • docker build # 通过Dockerfile文件,批量构建为镜像

9 K8S 有那些组件,都是干什么用的

master:

  • kube-apiserver:API 服务器为 REST 操作提供服务,公开 Kubernetes API,负责处理接受请求的工作。 并为集群的共享状态提供前端, 所有其他组件都通过该前端进行交互。
  • kube-controller-manager:负责运行控制器进程,负责集群内的Node 、Pod 副本、服务端点( Endpoint )、命名空间(Namespace )、服务账号( ServiceAccount )、资源定额( ResourceQuota )的管理,当某个 Node 意外宕机时, Controller Manager 会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。
  • kube-scheduler: 负责监视新创建的、未指定运行节点(node)的 Pods, 并选择节点来让 Pod 在上面运行。
  • etcd:一致且高可用的键值存储,用作 Kubernetes 所有集群数据的后台数据库。

node:

  • kubelet:它保证容器(containers)都运行在 Pod 中。向 master 汇报 node 节点的状态信息;接受指令并在 Pod 中创建 docker 容器;准备 Pod 所需的数据卷;返回 pod 的运行状态;在 node 节点执行容器健康检查
  • kube-proxy:集群中每个节点(node)上所运行的网络代理, 实现 Kubernetes 服务(Service) 概念的一部分。
  • 容器运行时(Container Runtime):容器运行环境是负责运行容器的软件。

10 K8S 创建一个pod的流程

  1. 准备好对应的yaml文件,通过kubectl发送到Api Server中;
  2. Api Server接收到客户端的请求将请求内容保存到etcd中;
  3. Scheduler会监测etcd,发现没有分配节点的pod对象通过过滤和打分筛选出最适合的节点运行pod;
  4. 节点会通过conteiner runntime 运行对应pod的容器以及创建对应的副本数;
  5. 节点上的kubelet会对自己节点上的容器进行管理;
  6. controler会监测集群中的每个节点,发现期望状态和实际状态不符合的话,就会通知对应的节点;
  7. 节点收到通知,会通过container runtime来对pod内的容器进行收缩或者扩张。

关于我 全网可搜《阿贤Linux》 CSDN、知乎、哔哩哔哩、博客园、51CTO、掘金、思否、开源中国、阿里云、腾讯云、华为云、今日头条、百家号、GitHub、个人博客 公众号:阿贤Linux 个人博客:blog.waluna.top https://blog.waluna.top/


原文链接: Linux运维工程师面试题(8).

标签:容器,面试题,p1,运维,exec,cmd,Linux,entry,docker
From: https://blog.51cto.com/waluna/7390100

相关文章

  • Linux的小白之路3
    第四章vim编辑器与shell脚本Vim编辑器aio插入模式Esc末行模式:wqa在光标的下一位进行操作I 直接插入O 光标下一行Esc进入命令模式命令模式中最常用的一些命令P paste脚本两种运行脚本 1.bash脚本名.sh //通用2. ./脚本名.sh //一般没有权限 chmodu+xexample.sh //增加......
  • 查看linux 操作系统版本、节点名称、架构等
    #uname-aLinuxtankcheng-Legion-Y9000P-IAH7H5.15.0-83-generic#92~20.04.1-UbuntuSMPMonAug2114:00:49UTC2023x86_64x86_64x86_64GNU/Linux操作系统:Linux节点名称:ttankcheng-Legion-Y9000P-IAH7H操作系统发型版号:5.15.0-83-generic系统版本与时间:#92~20.04.1......
  • Linux 编译安装 OpenSSL
    #下载软件包wgethttps://www.openssl.org/source/openssl-1.1.1v.tar.gz#编译安装OpenSSLtarzxvfopenssl-1.1.1v.tar.gzcdopenssl-1.1.1v./config--prefix=/usr/local/openssl-1.1.1make&&makeinstall#备份原OpenSSLmv/usr/bin/openssl/usr/bin/openssl.......
  • 构建可扩展的应用:六边形架构详解与实践 【含面试题】
    面试题分享2023最新面试合集链接2023大厂面试题PDF面试题PDF版本java、python面试题项目实战:AI文本OCR识别最佳实践AIGamma一键生成PPT工具直达链接玩转cloudStudio在线编码神器玩转GPUAI绘画、AI讲话、翻译,GPU点亮AI想象空间史上最全文档AI绘画stablediffusion资......
  • Linux基础38 负载均衡会话保持(redis配session共享), 四层负载均衡, nginx端口转发
    一、负载均衡会话保持当用户访问页面登录后,会在服务器上生成一个session文件,并且返回给浏览器一个session_id内容的cookie,cookie会存在浏览器中,下一次访问cookie会携带session_id来到服务器验证,没有变化则说明是登录状态,不需要重新登录1.session共享的方法1.把session文件保......
  • linux学习 Centos 7(四)
    linux学习Centos7(四)进程管理对于开发人员来说,其实Linux更多偏向于使用!什么是进程1、在Linux中,每一个程序都有自己的一个进程,每一个进程都有一个id号!2、每一个进程,都会有一个父进程!3、进程可以有两种存在方式:前台、后台进行!4、一般的话,服务都是后台运行的,基本的程序都......
  • LInux根目录爆满
    大致思路:备份/home内容,删除/home文件系统的逻辑卷,扩大/root文件系统,新建/home,恢复内容命令:##查看磁盘使用情况df-h##评估磁盘空间情况du-h-x--max-depth=1##打包home目录文件tar-cvf/tmp/home.tar/home##杀掉使用home的进程fuser-km/home##卸载home所在分区卷......
  • 快速部署灵活、强大、易用的开源spug 运维平台
    Docker安装vidocker-compose.ymlversion:"3.3"services:db:image:mariadb:10.8.2container_name:spug-dbrestart:alwayscommand:--port3306--character-set-server=utf8mb4--collation-server=utf8mb4_unicode_civolumes:......
  • Linux实现多硬盘数据存储
    fdisk-l查看可用磁盘设备1/#fdisk-l2Disk/dev/mmcblk1:7456MB,7818182656bytes,15269888sectors3238592cylinders,4heads,16sectors/track4Units:sectorsof1*512=512bytes56Disk/dev/mmcblk1doesn'tcontainavalidpartitiont......
  • 在EC2上对SELinux故障进行紧急恢复以及排查的思路及方法
    概述SELinux,全称Security-EnhancedLinux,是一个为系统提供强制访问控制机制的安全模块,安装并启用SELinux模块的操作系统会为每个进程和系统资源打上一个特殊的安全标记,称为SELinux上下文,并根据SELinux上下文信息以允许或拒绝访问行为。亚马逊云科技开发者社区为开发者们提供......