本書主要介紹了如何構(gòu)建、管理和運(yùn)行容器,解釋如何將人們?cè)贒ocker中學(xué)到的技能輕松地轉(zhuǎn)移到Podman上,以及如果你以前從未使用過容器引擎,你該如何輕松地學(xué)習(xí)使用Podman。本書還教你使用像pod這樣的高級(jí)功能,并指導(dǎo)你構(gòu)建準(zhǔn)備在Kubernetes邊緣或內(nèi)部運(yùn)行的應(yīng)用程序。最后,本書解釋了Linux內(nèi)核中用于將容器與系統(tǒng)和其他容器進(jìn)行隔離的所有安全功能。
本書適用于希望了解、開發(fā)和使用容器的軟件開發(fā)人員,以及需要在生產(chǎn)環(huán)境中運(yùn)行容器的系統(tǒng)管理員。Docker用戶也能通過本書了解一些Docker沒有提供的Podman高級(jí)功能,并會(huì)對(duì)Docker的工作原理有更深入的理解。
1.作者是RedHat的高級(jí)工程師,在計(jì)算機(jī)安全領(lǐng)域工作了 40 多年。他曾在 Red Hat 主導(dǎo) SELinux 的開發(fā),因此有時(shí)被稱為SELinux 先生。
2.Podman技術(shù)圖書,深入探討Linux操作系統(tǒng)的不同功能和技術(shù)。
3.Podman實(shí)踐參考指南,讓你更好地了解容器是什么、它們?nèi)绾喂ぷ鳌⒁约叭绾螌?shí)用Podman的不同功能。
丹尼爾·沃爾什(Daniel Walsh)領(lǐng)導(dǎo)了創(chuàng)建Podman、Buildah、Skopeo、CRI-O及其相關(guān)工具的團(tuán)隊(duì)。Dan是Red Hat公司杰出的高級(jí)工程師,于2001年8月加入該公司。他在計(jì)算機(jī)安全領(lǐng)域工作了40多年。在領(lǐng)導(dǎo)容器團(tuán)隊(duì)之前,Dan曾在Red Hat公司領(lǐng)導(dǎo)SELinux的開發(fā),因此有時(shí)被稱為SELinux先生。Dan擁有圣十字學(xué)院(College of the Holy Cross)的數(shù)學(xué)學(xué)士學(xué)位和伍斯特理工學(xué)院(Worcester Polytechnic Institute)的計(jì)算機(jī)科學(xué)碩士學(xué)位。你可以在Twitter和GitHub上找到他的賬號(hào)@rhatdan,也可以通過電子郵件聯(lián)系他,其郵箱為dwalsh@redhat.com。
第 1章Podman: 下一代容器引擎
1.1 術(shù)語說明
1.2 容器簡介
1.2.1容器鏡像:軟件交付的新方式
1.2.2 容器鏡像促進(jìn)了微服務(wù)的發(fā)展
1.2.3 容器鏡像格式
1.2.4 容器標(biāo)準(zhǔn)
1.3 有了Docker為什么還要使用Podman
1.3.1為什么只有一種方式運(yùn)行容器
1.3.3 非特權(quán)容器
1.3.3 fork/exec模型
1.3.4 Podman是無守護(hù)進(jìn)程的
1.3.5 用戶友好的命令行
1.3.6 支持REST API
1.3.7 與systemd集成
1.3.8 Pods
1.3.9 自定義鏡像倉庫
1.3.10 支持多種傳輸方式
1.3.11 深度可定制性
1.3.12 支持用戶命名空間
1.4 什么時(shí)候不使用Podman
1.5總結(jié)
第 2章 Podman命令行
2.1 使用容器工作
2.1.1 探索容器
2.1.2 運(yùn)行容器化應(yīng)用程序
2.1.3 停止容器
2.1.4 啟動(dòng)容器
2.1.5 列出容器
2.1.6 查看容器基礎(chǔ)信息
2.1.7 刪除容器
2.1.8 使用exec命令進(jìn)入容器操作
2.1.9 從容器創(chuàng)建鏡像
2.2 處理容器鏡像
2.2.1 容器與鏡像的區(qū)別
2.2.2 列出鏡像
2.2.3 檢查鏡像
2.2.4 推送鏡像
2.2.5 登錄到容器鏡像倉庫
2.2.6 標(biāo)記鏡像
2.2.7 刪除鏡像
2.2.8 拉取鏡像
2.2.9 搜索鏡像
2.2.10 掛載鏡像
2.3 構(gòu)建鏡像
2.3.1 Containerfile或Dockerfile的格式
2.3.2 自動(dòng)化構(gòu)建應(yīng)用
2.4總結(jié)
第3章 卷
3.1 使用卷與容器
3.1.1 命名卷
3.1.2 卷掛載選項(xiàng)
3.1.3 podman run --mount命令選項(xiàng)
3.2 總結(jié)
第4章 Pod
4.1 運(yùn)行Pod
4.2 創(chuàng)建Pod
4.3 向Pod中添加容器
4.4 啟動(dòng)Pod
4.5 停止Pod
4.7 刪除Pod
4.8總結(jié)
第二部分 設(shè)計(jì)
第5章 自定義和配置文件
5.1 存儲(chǔ)配置文件
5.1.1 存儲(chǔ)位置
5.1.2 存儲(chǔ)驅(qū)動(dòng)
5.2 倉庫的配置文件
5.3 引擎配置文件
5.4 系統(tǒng)配置文件
5.5總結(jié)
第6章 非特權(quán)容器
6.1 非特權(quán)Podman是如何工作的
6.2 非特權(quán)Podman技術(shù)內(nèi)幕
6.2.1 拉取鏡像
6.2.2 創(chuàng)建一個(gè)容器
6.2.3 配置容器網(wǎng)絡(luò)
6.2.4 開始容器監(jiān)控:conmon
6.2.5 啟動(dòng)OCI運(yùn)行時(shí)
6.2.6 容器化應(yīng)用程序運(yùn)行直至結(jié)束
6.3總結(jié)
第7章 與systemd集成
7.1 在容器中運(yùn)行systemd
7.1.1 容器化的systemd要求
7.1.2 systemd模式下的Podman容器
7.1.3 在systemd容器中運(yùn)行Apache服務(wù)
7.2使用journald進(jìn)行日志記錄和事件處理
7.2.1 日志驅(qū)動(dòng)程序
7.2.2 事件
7.3 在啟動(dòng)時(shí)啟動(dòng)容器
7.3.1 重啟容器
7.3.2 使用Podman容器作為systemd服務(wù)
7.3.3 分發(fā)用于管理Podman容器的systemd單元文件
7.3.4 自動(dòng)更新Podman容器
7.4 在通知單元文件中運(yùn)行容器
7.5 更新后回滾失敗的容器
7.6 套接字激活的Podman容器
7.7總結(jié)
第8章 與Kubernetes協(xié)同工作
8.1 Kubernetes YAML文件
8.2 用Podman生成Kubernetes YAML文件
8.3 從kubernetes YAML生成Podman Pod和容器
8.3.1 基于Kubernetes YAML文件關(guān)閉Pod和容器
8.3.2 使用Podman和Kubernetes YAML文件構(gòu)建鏡像
8.4 在容器內(nèi)運(yùn)行Podman
8.4.1 在Podman容器內(nèi)運(yùn)行Podman
8.4.2 在Kubernetes Pod中運(yùn)行Podman
第9章 Podman作為服務(wù)
9.1 介紹Podman服務(wù)
9.1.1 systemd服務(wù)
9.2 Podman支持的API
9.3 與Podman交互的Python庫
9.3.1 使用docker-py庫與Podman API進(jìn)行交互
9.3.2 使用podman-py與Podman API進(jìn)行交互
9.3.3 應(yīng)該使用哪個(gè)Python庫
9.4 使用Podman服務(wù)與docker-compose
9.5 podman --remote
9.5.1 本地連接
9.5.2 遠(yuǎn)程連接
9.5.3 設(shè)置客戶端機(jī)器上的SSH
9.5.4 配置連接
9.6總結(jié)
第 10章 安全容器隔離
10.1 只讀的Linux內(nèi)核偽文件系統(tǒng)
10.1.1 取消屏蔽的文件路徑
10.2 linux capabilities
10.2.1 被刪除的Linux capabilities
10.2.2 刪除CAP_SYS_ADMIN
10.2.3 刪除linux capabilities
10.2.4 添加Linux capabilities
10.2.5 無新特權(quán)
10.2.6 沒有任何capabilities的root仍然危險(xiǎn)
10.3 UID隔離:用戶命名空間
10.3.1 使用--userns=auto參數(shù)標(biāo)志隔離容器
10.3.2 用戶命名空間的linux capabilities
10.3.3 使用--userns=auto標(biāo)志的非特權(quán)(rootless)Podman
10.3.4 使用--userns=auto標(biāo)志的用戶卷(volumes)
10.4 進(jìn)程隔離:PID命名空間
10.5 網(wǎng)絡(luò)隔離:網(wǎng)絡(luò)命名空間
10.6 IPC隔離:IPC namespace
10.7 文件系統(tǒng)隔離:掛載命名空間
10.8 文件系統(tǒng)隔離:SELinux
10.8.1 SELinux類型強(qiáng)制執(zhí)行
10.8.2 SELinux多類別安全分離
10.9 系統(tǒng)調(diào)用隔離Seccomp
第 11章 其他安全注意事項(xiàng)
11.1 守護(hù)進(jìn)程與fork/exec模型
11.1.1 訪問docker.sock
11.1.2 審計(jì)和日志
11.2 Podman機(jī)密處理
11.3 Podman鏡像信任
11.3.1 Podman鏡像簽名
11.4 Podman鏡像掃描
11.4.1 只讀容器
11.5 深度安全性
11.5.1 Podman同時(shí)使用所有安全機(jī)制
11.5.2 應(yīng)該在哪里運(yùn)行你的容器
11.6總結(jié)
附錄A Podman相關(guān)容器工具
附錄B OCI運(yùn)行時(shí)
附錄C獲取Podman
附錄D 貢獻(xiàn)給 Podman
附錄E Podman on Macos
附錄F 在 Windows 上使用 Podman