Linux運(yùn)維工程師面試題(7)

Linux運(yùn)維工程師面試題(7)
1 常用的 ansible 模塊有哪些
2 說一下 ansible 使用 roles 編排的目錄結(jié)構(gòu)
3 docker 六大命名空間 namespace
4 cgroups 的作用
5 runc 的作用
6 docker 常用的命令
7 docker 存儲引擎有哪些,區(qū)別是什么
8 進(jìn)入 docker 容器有幾種方法,區(qū)別是什么
9 Dockerfile 常用指令
10 容器數(shù)據(jù)持久保存方式
Linux運(yùn)維工程師面試題(7)
祝各位小伙伴們早日找到自己心儀的工作。
持續(xù)學(xué)習(xí)才不會被淘汰。
地球不爆炸,我們不放假。
機(jī)會總是留給有有準(zhǔn)備的人的。
1 常用的 ansible 模塊有哪些
Ping
Command
Shell
Script
Copy
Fetch
File
Yum
Service
User
Group
Lineinfile
Replace
Setup
2 說一下 ansible 使用 roles 編排的目錄結(jié)構(gòu)
3 docker 六大命名空間 namespace
MNT Namespace(mount):提供磁盤掛載點(diǎn)和文件系統(tǒng)的隔離能力
IPC Namespace(Inter-Process Communication):提供進(jìn)程間通訊的隔離能力,包括信號量,消息隊列和共享內(nèi)存
UTS Namespace(UNIX Timesharing System):提供內(nèi)核,主機(jī)名和域名隔離能力
PID Namesapce(Process Identification):提供進(jìn)程隔離能力
Net Namespace(network):提供網(wǎng)絡(luò)隔離能力,包括網(wǎng)絡(luò)設(shè)備,網(wǎng)絡(luò)棧,端口等
User Namespace(user):提供用戶隔離能力,包括用戶和組
4 cgroups 的作用
cgroups,其名稱源自控制組群(control groups)的簡寫,是 Linux 內(nèi)核的一個功能,用來限制、控制與分離一個進(jìn)程組能夠使用的資源上限,包括CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)帶寬等等。此外,還能夠?qū)M(jìn)程進(jìn)行優(yōu)先級設(shè)置,資源的計量以及資源的控制(比如:將進(jìn)程掛起和恢復(fù)等操作)。
5 runc 的作用
Runc 是容器的運(yùn)行時(runtime),是一款標(biāo)準(zhǔn)的用于運(yùn)行容器的開源客戶端。它是基于 OCI(開放容器聯(lián)盟)標(biāo)準(zhǔn)構(gòu)建的,不僅可以用于Linux容器,還可以用于Windows容器。Runc的功能是在Linux和Windows中把容器作為一個單獨(dú)的進(jìn)程運(yùn)行,并且可以通過命令行或RPC接口來控制它。它可以管理容器的生命周期,比如創(chuàng)建、啟動、停止、殺死等。
6 docker 常用的命令
選擇幾個說就可以,沒必要全部說出來,面試官問有什么補(bǔ)充的時候可以再說幾個。
build:從 Dockerfile 構(gòu)建鏡像
commit:從容器的更改創(chuàng)建新鏡像
cp:在容器和本地文件系統(tǒng)之間復(fù)制文件/文件夾
create:創(chuàng)建一個新容器
events:從服務(wù)器獲取實(shí)時事件
exec:在正在運(yùn)行的容器中運(yùn)行命令
history:顯示鏡像的歷史
images:列出鏡像
import:從 tar 包導(dǎo)入內(nèi)容以創(chuàng)建文件系統(tǒng)鏡像
info:查看系統(tǒng)范圍的信息
inspect:返回有關(guān) Docker 對象的低級信息
load:從 tar 包或標(biāo)準(zhǔn)輸入導(dǎo)入鏡像
login:登錄到 Docker 倉庫
logs:獲取容器的日志
ps:列出容器
pull:從倉庫中拉取鏡像或存儲庫
push:將鏡像或存儲庫推送到倉庫
rm:刪除一個或多個容器
rmi:刪除一個或多個鏡像
run:在新容器中運(yùn)行命令
save:將一個或多個鏡像保存到 tar 包(默認(rèn)流式傳輸?shù)綐?biāo)準(zhǔn)輸出)
tag:創(chuàng)建一個引用 SOURCE_IMAGE 的標(biāo)簽 TARGET_IMAGE
version:查看 Docker 版本信息
7 docker 存儲引擎有哪些,區(qū)別是什么
AUFS (Another UnionFS)是一種 Union FS,是文件級的存儲驅(qū)動,AUFS 簡單理解就是將多層的文件系統(tǒng)聯(lián)合掛載成統(tǒng)一的文件系統(tǒng),這種文件系統(tǒng)可以一層一層地疊加修改文件,只有最上層是可寫層,底下所有層都是只讀層,對應(yīng)到 Docker,最上層就是 container 層,底層就是 image 層。
Overlay 也是一種 Union FS,和 AUFS 多層相比,Overlay 只有兩層:一個 upper 文件系統(tǒng)和一個lower 文件系統(tǒng),分別代表 Docker 的容器層(upper)和鏡像層(lower)。當(dāng)需要修改一個文件時,使用 CopyW 將文件從只讀的 lower 層復(fù)制到可寫層 upper,結(jié)果也保存在 upper 層。
Device mapper,提供的是一種從邏輯設(shè)備到物理設(shè)備的映射框架機(jī)制,前面講的 AUFS 和 OverlayFS 都是文件級存儲,而 Device mapper 是塊級存儲,所有的操作都是直接對塊進(jìn)行操作,而不是文件。因?yàn)镃entOS 7.2和RHEL7.2的之前版本內(nèi)核版本不支持overlay2,默認(rèn)使用的存儲驅(qū)動程序,最大數(shù)據(jù)容量只支持100GB且性能不佳,當(dāng)前較新版本的CentOS已經(jīng)支持overlay2,因此推薦使用overlay2,另外此存儲引擎已在Docker Engine 18.09中棄用
ZFS(Sun -2005)/btrfs(Oracle-2007):目前沒有廣泛使用
vfs:用于測試環(huán)境,適用于無法使用copy-on -write時的情況。此存儲驅(qū)動程序的性能很差,通常不建議用于生產(chǎn)
8 進(jìn)入 docker 容器有幾種方法,區(qū)別是什么
使用attach命令。docker attach 容器名,attach類似于vnc,操作會在同一個容器的多個會話界面同步顯示,所有使用此方式進(jìn)入容器的操作都是同步顯示的,且使用exit退出后容器自動關(guān)閉,不推薦使用,需要進(jìn)入到有shell環(huán)境的容器。
使用exec命令。在運(yùn)行中的容器啟動新進(jìn)程,可以執(zhí)行單次命令,以及進(jìn)入容器測試環(huán)境使用此方式,使用exit退出,但容器還在運(yùn)行,推薦使用。
使用run命令。run命令可以創(chuàng)建并進(jìn)入容器。
使用ssh進(jìn)行容器。需要在鏡像(或容器)中安裝ssh server,并且給用戶設(shè)置密碼,不推薦使用。
使用nsenter命令。nsenter命令需要通過PID進(jìn)入到容器內(nèi)部,且退出后仍然正常運(yùn)行:不過需要事先使用 docker inspect 獲取到容器的PID,目前此方式使用較少,此工具來自于util-linux包。
9 Dockerfile 常用指令
選擇幾個說就可以,沒必要全部說出來,面試官問有什么補(bǔ)充的時候可以再說幾個。
FROM:指定基礎(chǔ)鏡像
LABEL:指定鏡像元數(shù)據(jù)
RUN:執(zhí)行shell命令
ENV:設(shè)置環(huán)境變量
COPY:復(fù)制文本
ADD:復(fù)制和解包文件
CMD:容器啟動命令
ENTRYPOINT:入口點(diǎn)
ARG:構(gòu)建參數(shù)
VOLUME:匿名卷
EXPOSE:暴露端口
WORKDIR:指定工作目錄
ONBUILD:子鏡像引用父鏡像的指令
USER:指定當(dāng)前用戶
HEALTHCHECK:健康檢查
STOPSIGNAL:退出容器的信號
SHELL:指定shell
10 容器數(shù)據(jù)持久保存方式
數(shù)據(jù)卷(Data Volume):直接將宿主機(jī)目錄掛載至容器的指定的目錄,推薦使用此方式,此方式較常用。
指定宿主機(jī)目錄或文件格式: -v <宿主機(jī)絕對路徑的目錄或文件>:<容器目錄或文件>[:ro]
匿名卷,只指定容器內(nèi)路徑:-v <容器內(nèi)路徑>
命名卷:-v <卷名>:<容器目錄路徑>
數(shù)據(jù)卷容器(Data Volume Container):間接使用宿主機(jī)空間,數(shù)據(jù)卷容器是將宿主機(jī)的目錄掛載至一個專門的數(shù)據(jù)卷容器,然后讓其他容器通過數(shù)據(jù)卷容器讀寫宿主機(jī)的數(shù)據(jù),此方式不常用。
--volumes-from <數(shù)據(jù)卷容器>
以上面試題僅僅個人總結(jié),想到什么就寫什么,沒有任何順序,寫的有什么不對的地方請各位大佬評論、留言,我會及時更正。
原文鏈接: [Linux運(yùn)維工程師面試題(7)](https://blog.waluna.top/2023/03/12/1361/).