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