TECH PLAY

Podmanイン・アクション

4,180円 (税込)

楽天

Podmanイン・アクション

書籍情報

発売日:

著者/編集:Daniel Walsh/磯田雄輝/井上貴博/岡田裕輝/織学/田中司恩

出版社:秀和システム

発行形態:単行本

ページ数:376ページ

書籍説明

内容紹介

 デーモンレス・Docker互換のコンテナエンジンPodmanで、コンテナを構築、管理、実行する方法を、Red HatでPodmanチームを率いる著者が詳細に説明しています。PodmanにはDockerで学んだスキルを簡単に応用できますが、コンテナエンジンの使用経験がなくても、Podmanは簡単に使用できます。本書では、その両方が満足できる内容となることを目指しました。また、Podなどの高度な機能の使用方法についても説明し、Kubernetesのエッジや内部ですぐに実行できるアプリケーションを構築する手順を紹介します。さらに、システムや他のコンテナからコンテナを分離するために使用されるLinuxカーネルの全てのセキュリティ機能について説明しています。 本書は、4つの部と6つの付録に分かれています。 「第1部 基礎」では、Podmanの概要を説明します。第1章では、Podmanの機能、Podmanが開発された経緯、Podmanが重要である理由について説明します。第2章と第3章では、コマンドラインインターフェイスと、コンテナ内でボリュームを使用する方法を解説します。第4章では、Podの概念と、PodmanとPodがどのように連携するかを紹介します。 「第2部 設計」では、Podmanの設計について詳しく説明します。ルートレスコンテナとその仕組みを学び、ユーザー名前空間とルートレスコンテナのセキュリティについての理解を深めることができます。また、Podman環境の設定をカスタマイズする方法も紹介します。 「第3部 高度なトピック」では、Podmanの基礎を超える内容を取り上げます。第7章では、Podmanがsystemdとの統合を通じて、実稼働環境でどのように機能するかを説明します。また、コンテナ内でのsystemdの実行方法、systemdをコンテナマネージャとして使用する方法、Podmanコンテナを使用してエッジサーバをセットアップし、systemdでコンテナのライフサイクルを管理する方法を解説します。第8章では、Podmanを使用してコンテナをKubernetesに移行する方法を説明します。第9章では、Podmanをサービスとして実行し、Podmanコンテナへのリモートアクセスを可能にする方法を紹介します。 「第4部 コンテナのセキュリティ」では、セキュリティに関する重要な考慮事項を解説します。第10章では、コンテナの確実な分離に使用する機能を説明します。また、SELinux、seccomp、Linuxケイパビリティ、カーネルファイルシステム、名前空間など、Linuxのセキュリティサブシステムについても説明します。第11章では、コンテナを可能な限りセキュアな方法で実行するために考慮すべきセキュリティ事項やベストプラクティスを紹介します。 また、Podmanに関連するテーマを扱う6つの付録があります。

目次

はじめに 本書についてなど 著者紹介など 日本語版に寄せて Part 1 基礎 Chapter 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つしかないのか 1.3.2 ルートレスコンテナ 1.3.3 fork/execモデル 1.3.4 デーモンレス 1.3.5 ユーザーフレンドリーなコマンドライン 1.3.6 REST APIのサポート 1.3.7 systemdの統合 1.3.8 Pod 1.3.9 カスタマイズ可能なレジストリ設定 1.3.10 マルチトランスポート 1.3.11 完全なカスタマイズ性 1.3.12 ユーザー名前空間のサポート 1.4 Podmanを使用しない場合 まとめ Chapter 2 コマンドライン 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 コンテナへの実行 2.1.9 コンテナからイメージを作成 2.2 コンテナイメージの操作 2.2.1 コンテナとイメージの違い 2.2.2 イメージのリスト表示 2.2.3 イメージの調査 2.2.4 イメージのプッシュ 2.2.5 podman login:コンテナレジストリへのログイン 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 アプリケーションのビルドの自動化 まとめ Chapter 3 ボリューム 3.1コンテナでのボリュームの使用 3.1.1 名前付きボリューム 3.1.2 ボリュームのマウントオプション 3.1.3 podman run --mountコマンドオプション まとめ Chapter 4 Pod 4.1 Podの実行 4.2 Podの作成 4.3 Podへのコンテナ追加 4.4 Podの起動 4.5 Podの停止 4.6 Podの表示 4.7 Podの削除 まとめ Part 2 設計 Chapter 5 カスタマイズと設定ファイル 5.1 ストレージの設定ファイル 5.1.1 ストレージの場所 5.1.2 ストレージドライバ 5.2 レジストリの設定ファイル 5.2.1 registries.conf 5.3 エンジンの設定ファイル 5.4 システム設定ファイル まとめ Chapter 6 ルートレスコンテナ 6.1 ルートレスPodmanの仕組み 6.1.1 複数のユーザー識別子(UID)によって所有されるコンテンツが含まれるコンテナイメージ 6.2 ルートレスPodmanの内部構造 6.2.1 イメージのプル 6.2.2 コンテナの作成 6.2.3 ネットワークの設定 6.2.4 コンテナモニタの起動:conmon 6.2.5 OCIランタイムの起動 6.2.6 コンテナ化されたアプリケーションの実行が完了するまで まとめ Part 3 高度なトピック Chapter 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 systemdサービスとしてのPodmanコンテナ 7.3.3 Podmanコンテナの管理に使用するsystemdユニットファイルの配布 7.3.4 Podmanコンテナの自動更新 7.4 notifyユニットファイルでコンテナを実行する 7.5 更新に失敗したコンテナのロールバック 7.6 Podmanコンテナとソケットアクティベーション まとめ Chapter 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を実行する まとめ Chapter 9 サービスとしてのPodman 9.1 Podmanサービスの紹介 9.1.1 systemdサービス 9.2 PodmanがサポートするAPI 9.3 Podmanとやり取りするためのPythonライブラリ 9.3.1 Podman APIでのdocker-pyの使用 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 接続を設定する まとめ Part 4 コンテナのセキュリティ Chapter 10 コンテナ隔離におけるセキュリティ 10.1 読み取り専用のLinux カーネル擬似ファイルシステム 10.1.1 マスクされたパスの解除 10.1.2 マスクされるパスの追加 10.2 Linuxケイパビリティ 10.2.1 Linuxケイパビリティの削除 10.2.2 CAP_SYS_ADMINの削除 10.2.3 ケイパビリティの削除 10.2.4 ケイパビリティの追加 10.2.5 新たな特権の追加防止 10.2.6 ケイパビリティのないrootでも危険な理由 10.3 ユーザー名前空間によるUIDの分離 10.3.1 --userns=autoフラグを利用したコンテナの隔離 10.3.2 ユーザー名前空間内のLinuxのケイパビリティ 10.3.3 ルートレスPodmanにおける--userns=autoフラグ 10.3.4 ユーザーボリュームにおける--userns=autoフラグ 10.4 PID名前空間によるプロセスの分離 10.5 ネットワーク名前空間によるネットワークの分離 10.6 IPC名前空間によるIPCの分離 10.7 マウント名前空間によるファイルシステムの分離 10.8 SELinuxによるファイルシステムの分離 10.8.1 SELinux type enforcement 10.8.2 SELinuxのMulti-Category Securityによる分離 10.9 seccompによるシステムコールの分離 10.10 仮想マシンの分離 まとめ Chapter 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 どこでコンテナを実行するべきか まとめ Appendix 付録 Appendix A Podman関連のコンテナツール A.1 Skopeo A.2 Buildah A.2.1 ベースイメージから作業用コンテナを作成する A.2.2 作業用コンテナにデータを追加する A.2.3 作業コンテナの中でコマンドを実行する A.2.4 作業コンテナにホストから直接コンテンツを追加する A.2.5 作業用コンテナを設定する A.2.6 作業コンテナからイメージを作成する A.2.7 コンテナレジストリにイメージをプッシュする A.2.8 Containerfileからイメージをビルドする A.2.9 ライブラリとしてのBuildah A.3 CRI-O:OCIコンテナのコンテナランタイムインターフェイス Appendix B OCIランタイム B.1 runc B.2 crun B.3 Kata B.4 gVisor Appendix C Podmanの入手 C.1 Podmanのインストール C.1.1 macOS C.1.2 Windows C.1.3 Arch LinuxとManjaro Linux C.1.4 CentOS C.1.5 Debian C.1.6 Fedora C.1.7 Fedora CoreOS/Fedora Silverblue C.1.8 Gentoo C.1.9 OpenEmbedded C.1.10 openSUSE C.1.11 openSUSE Kubic C.1.12 Raspberry Pi OS arm64 C.1.13 Red Hat Enterprise Linux C.2 ソースコードからのビルド C.3 Podman Desktop まとめ Appendix D Podmanへの貢献 D.1 コミュニティへの参加 D.2 github.com上のPodman Appendix E macOSでPodmanを使用する E.1 podman machineの使用 E.1.1 podman machine init E.1.2 Podman machineのSSH設定 E.1.3 仮想マシンの起動 E.1.4 仮想マシンの停止 まとめ Appendix F WindowsでPodmanを使用する F.1 ファーストステップ F.1.1 前提条件 F.1.2 Podmanのインストール F.2 podman machineの使用 F.2.1 podman machine init F.2.2 PodmanマシンのSSH設定 F.2.3 WSL 2 インスタンスの起動 F.2.4 podman machineコマンドの使用 まとめ 訳者あとがき 『Podman in Action』翻訳チームメンバープロフィール

著者情報

Daniel Walsh

井上貴博

八木澤健人

岡田裕輝

德留幸子

燃脇綾子

田中司恩

磯田雄輝

織学

西村拓也

野間亮志

長嶺精彦