Podman實戰 Podman in Action: Secure, Rootless Containers for Kubernetes, Microservices, and More

丹尼爾·沃爾什(Daniel Walsh)

  • Podman實戰-preview-1
  • Podman實戰-preview-2
Podman實戰-preview-1

相關主題

商品描述

本書主要介紹瞭如何構建、管理和運行容器,解釋如何將人們在Docker中學到的技能輕松地轉移到Podman上,以及如果你以前從未使用過容器引擎,你該如何輕松地學習使用Podman。本書還教你使用像pod這樣的高級功能,並指導你構建準備在Kubernetes邊緣或內部運行的應用程序。最後,本書解釋了Linux內核中用於將容器與系統和其他容器進行隔離的所有安全功能。

本書適用於希望瞭解、開發和使用容器的軟件開發人員,以及需要在生產環境中運行容器的系統管理員。Docker用戶也能通過本書瞭解一些Docker沒有提供的Podman高級功能,並會對Docker的工作原理有更深入的理解。

作者簡介

丹尼尔·沃尔什(Daniel Walsh)领导了创建Podman、Buildah、Skopeo、CRI-O及其相关工具的团队。Dan是Red Hat公司杰出的高级工程师,于2001年8月加入该公司。他在计算机安全领域工作了40多年。在领导容器团队之前,Dan曾在Red Hat公司领导SELinux的开发,因此有时被称为SELinux先生。Dan拥有圣十字学院(College of the Holy Cross)的数学学士学位和伍斯特理工学院(Worcester Polytechnic Institute)的计算机科学硕士学位。你可以在Twitter和GitHub上找到他的账号@rhatdan,也可以通过电子邮件联系他,其邮箱为dwalsh@redhat.com。

目錄大綱

第 1章Podman: 下一代容器引擎

1.1 術語說明

1.2 容器簡介

1.2.1容器鏡像:軟件交付的新方式

1.2.2 容器鏡像促進了微服務的發展

1.2.3 容器鏡像格式

1.2.4 容器標準

1.3 有了Docker為什麽還要使用Podman

1.3.1為什麽只有一種方式運行容器

1.3.3 非特權容器

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總結

第 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 從容器創建鏡像

2.2 處理容器鏡像

2.2.1 容器與鏡像的區別

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 構建鏡像

2.3.1 Containerfile或Dockerfile的格式

2.3.2 自動化構建應用

2.4總結

第3章 捲

3.1 使用捲與容器

3.1.1 命名捲

3.1.2 捲掛載選項

3.1.3 podman run --mount命令選項

3.2 總結

第4章 Pod

4.1 運行Pod

4.2 創建Pod

4.3 向Pod中添加容器

4.4 啟動Pod

4.5 停止Pod

4.7 刪除Pod

4.8總結

第二部分 設計

第5章 自定義和配置文件

5.1 存儲配置文件

5.1.1 存儲位置

5.1.2 存儲驅動

5.2 倉庫的配置文件

5.3 引擎配置文件

5.4 系統配置文件

5.5總結

第6章 非特權容器

6.1 非特權Podman是如何工作的

6.2 非特權Podman技術內幕

6.2.1 拉取鏡像

6.2.2 創建一個容器

6.2.3 配置容器網絡

6.2.4 開始容器監控:conmon

6.2.5 啟動OCI運行時

6.2.6 容器化應用程序運行直至結束

6.3總結

第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 日誌驅動程序

7.2.2 事件

7.3 在啟動時啟動容器

7.3.1 重啟容器

7.3.2 使用Podman容器作為systemd服務

7.3.3 分發用於管理Podman容器的systemd單元文件

7.3.4 自動更新Podman容器

7.4 在通知單元文件中運行容器

7.5 更新後回滾失敗的容器

7.6 套接字激活的Podman容器

7.7總結

第8章 與Kubernetes協同工作

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文件構建鏡像

8.4 在容器內運行Podman

8.4.1 在Podman容器內運行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總結

第 10章 安全容器隔離

10.1 只讀的Linux內核偽文件系統

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 無新特權

10.2.6 沒有任何capabilities的root仍然危險

10.3 UID隔離:用戶命名空間

10.3.1 使用--userns=auto參數標志隔離容器

10.3.2 用戶命名空間的linux capabilities

10.3.3 使用--userns=auto標志的非特權(rootless)Podman

10.3.4 使用--userns=auto標志的用戶捲(volumes)

10.4 進程隔離:PID命名空間

10.5 網絡隔離:網絡命名空間

10.6 IPC隔離:IPC namespace

10.7 文件系統隔離:掛載命名空間

10.8 文件系統隔離:SELinux

10.8.1 SELinux類型強制執行

10.8.2 SELinux多類別安全分離

10.9 系統調用隔離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總結

附錄A Podman相關容器工具

附錄B OCI運行時

附錄C獲取Podman

附錄D 貢獻給 Podman

附錄E Podman on Macos

附錄F 在 Windows 上使用 Podman