[toc] # Linux運維工程師面試題(7) > 祝各位小伙伴們早日找到自己心儀的工作。 > 持續學習才不會被淘汰。 > 地球不爆炸,我們不放假。 > 機會總是留給有有準備的人的。 > 加油,打工人! ## 1 常用的 ansible 模塊有哪些 - Ping - Command - Shell ...
目錄
Linux運維工程師面試題(7)
祝各位小伙伴們早日找到自己心儀的工作。
持續學習才不會被淘汰。
地球不爆炸,我們不放假。
機會總是留給有有準備的人的。
加油,打工人!
1 常用的 ansible 模塊有哪些
- Ping
- Command
- Shell
- Script
- Copy
- Fetch
- File
- Yum
- Service
- User
- Group
- Lineinfile
- Replace
- Setup
2 說一下 ansible 使用 roles 編排的目錄結構
.travis.yml
README.md
defaults/
main.yml
files/
handlers/
main.yml
meta/
main.yml
tasks/
main.yml
templates/
tests/
inventory
test.yml
vars/
main.yml
3 docker 六大命名空間 namespace
- MNT Namespace(mount):提供磁碟掛載點和文件系統的隔離能力
- IPC Namespace(Inter-Process Communication):提供進程間通訊的隔離能力,包括信號量,消息隊列和共用記憶體
- UTS Namespace(UNIX Timesharing System):提供內核,主機名和功能變數名稱隔離能力
- PID Namesapce(Process Identification):提供進程隔離能力
- Net Namespace(network):提供網路隔離能力,包括網路設備,網路棧,埠等
- User Namespace(user):提供用戶隔離能力,包括用戶和組
4 cgroups 的作用
cgroups,其名稱源自控制組群(control groups)的簡寫,是 Linux 內核的一個功能,用來限制、控制與分離一個進程組能夠使用的資源上限,包括CPU、記憶體、磁碟、網路帶寬等等。此外,還能夠對進程進行優先順序設置,資源的計量以及資源的控制(比如:將進程掛起和恢復等操作)。
5 runc 的作用
Runc 是容器的運行時(runtime),是一款標準的用於運行容器的開源客戶端。它是基於 OCI(開放容器聯盟)標準構建的,不僅可以用於Linux容器,還可以用於Windows容器。Runc的功能是在Linux和Windows中把容器作為一個單獨的進程運行,並且可以通過命令行或RPC介面來控制它。它可以管理容器的生命周期,比如創建、啟動、停止、殺死等。
6 docker 常用的命令
選擇幾個說就可以,沒必要全部說出來,面試官問有什麼補充的時候可以再說幾個。
- build:從 Dockerfile 構建鏡像
- commit:從容器的更改創建新鏡像
- cp:在容器和本地文件系統之間複製文件/文件夾
- create:創建一個新容器
- events:從伺服器獲取實時事件
- exec:在正在運行的容器中運行命令
- history:顯示鏡像的歷史
- images:列出鏡像
- import:從 tar 包導入內容以創建文件系統鏡像
- info:查看系統範圍的信息
- inspect:返回有關 Docker 對象的低級信息
- load:從 tar 包或標準輸入導入鏡像
- login:登錄到 Docker 倉庫
- logs:獲取容器的日誌
- ps:列出容器
- pull:從倉庫中拉取鏡像或存儲庫
- push:將鏡像或存儲庫推送到倉庫
- rm:刪除一個或多個容器
- rmi:刪除一個或多個鏡像
- run:在新容器中運行命令
- save:將一個或多個鏡像保存到 tar 包(預設流式傳輸到標準輸出)
- tag:創建一個引用 SOURCE_IMAGE 的標簽 TARGET_IMAGE
- version:查看 Docker 版本信息
7 docker 存儲引擎有哪些,區別是什麼
- AUFS (Another UnionFS)是一種 Union FS,是文件級的存儲驅動,AUFS 簡單理解就是將多層的文件系統聯合掛載成統一的文件系統,這種文件系統可以一層一層地疊加修改文件,只有最上層是可寫層,底下所有層都是只讀層,對應到 Docker,最上層就是 container 層,底層就是 image 層。
- Overlay 也是一種 Union FS,和 AUFS 多層相比,Overlay 只有兩層:一個 upper 文件系統和一個lower 文件系統,分別代表 Docker 的容器層(upper)和鏡像層(lower)。當需要修改一個文件時,使用 CopyW 將文件從只讀的 lower 層複製到可寫層 upper,結果也保存在 upper 層。
- Device mapper,提供的是一種從邏輯設備到物理設備的映射框架機制,前面講的 AUFS 和 OverlayFS 都是文件級存儲,而 Device mapper 是塊級存儲,所有的操作都是直接對塊進行操作,而不是文件。因為CentOS 7.2和RHEL7.2的之前版本內核版本不支持overlay2,預設使用的存儲驅動程式,最大數據容量只支持100GB且性能不佳,當前較新版本的CentOS已經支持overlay2,因此推薦使用overlay2,另外此存儲引擎已在Docker Engine 18.09中棄用
- ZFS(Sun -2005)/btrfs(Oracle-2007):目前沒有廣泛使用
- vfs:用於測試環境,適用於無法使用copy-on -write時的情況。此存儲驅動程式的性能很差,通常不建議用於生產
8 進入 docker 容器有幾種方法,區別是什麼
- 使用attach命令。docker attach 容器名,attach類似於vnc,操作會在同一個容器的多個會話界面同步顯示,所有使用此方式進入容器的操作都是同步顯示的,且使用exit退出後容器自動關閉,不推薦使用,需要進入到有shell環境的容器。
- 使用exec命令。在運行中的容器啟動新進程,可以執行單次命令,以及進入容器測試環境使用此方式,使用exit退出,但容器還在運行,推薦使用。
- 使用run命令。run命令可以創建併進入容器。
- 使用ssh進行容器。需要在鏡像(或容器)中安裝ssh server,並且給用戶設置密碼,不推薦使用。
- 使用nsenter命令。nsenter命令需要通過PID進入到容器內部,且退出後仍然正常運行:不過需要事先使用 docker inspect 獲取到容器的PID,目前此方式使用較少,此工具來自於util-linux包。
9 Dockerfile 常用指令
選擇幾個說就可以,沒必要全部說出來,面試官問有什麼補充的時候可以再說幾個。
- FROM:指定基礎鏡像
- LABEL:指定鏡像元數據
- RUN:執行shell命令
- ENV:設置環境變數
- COPY:複製文本
- ADD:複製和解包文件
- CMD:容器啟動命令
- ENTRYPOINT:入口點
- ARG:構建參數
- VOLUME:匿名捲
- EXPOSE:暴露埠
- WORKDIR:指定工作目錄
- ONBUILD:子鏡像引用父鏡像的指令
- USER:指定當前用戶
- HEALTHCHECK:健康檢查
- STOPSIGNAL:退出容器的信號
- SHELL:指定shell
10 容器數據持久保存方式
- 數據捲(Data Volume):直接將宿主機目錄掛載至容器的指定的目錄,推薦使用此方式,此方式較常用。
- 指定宿主機目錄或文件格式: -v <宿主機絕對路徑的目錄或文件>:<容器目錄或文件>[:ro]
- 匿名捲,只指定容器內路徑:-v <容器內路徑>
- 命名捲:-v <捲名>:<容器目錄路徑>
- 數據捲容器(Data Volume Container):間接使用宿主機空間,數據捲容器是將宿主機的目錄掛載至一個專門的數據捲容器,然後讓其他容器通過數據捲容器讀寫宿主機的數據,此方式不常用。
- --volumes-from <數據捲容器>
關於我
全網可搜《阿賢Linux》
CSDN、知乎、嗶哩嗶哩、博客園、51CTO、掘金、思否、開源中國、阿裡雲、騰訊雲、華為雲、今日頭條、百家號、GitHub、個人博客
公眾號:阿賢Linux
個人博客:blog.waluna.top
https://blog.waluna.top/
原文鏈接: Linux運維工程師面試題(7).