type
status
date
slug
summary
tags
category
icon
password
第4章: コンテナイメージの管理
目標: コンテナイメージのライフサイクルを作成から削除まで管理する。
目的:
- リモートレジストリからイメージを検索・取得する。
- コンテナイメージをローカルまたはレジストリでエクスポート・インポート・管理する。
セクション
- レジストリへのアクセス (クイズ付き)
- コンテナイメージの操作 (ガイド演習付き)
レジストリへのアクセス
目的
以下が達成できるようになる:
- リモートレジストリからイメージを検索・取得する。
- 認証済みの公共レジストリを使用するメリットを説明できる。
- Dockerデーモンをカスタマイズして別のコンテナイメージレジストリにアクセスできるようにする。
- DockerコマンドやREST APIを使ってコンテナイメージを検索する。
- レジストリからイメージを取得する。
- ダウンロード済みのイメージをデーモンキャッシュから確認する。
- タグを管理して特定のバージョンのイメージを取得する。
1. レジストリ (Registry)
- レジストリは、コンテナイメージを保管・管理するための場所です。いわば「コンテナイメージの倉庫」と言えます。
- 例: Docker Hub、Amazon Elastic Container Registry (ECR)、Google Container Registry (GCR) など。
2. リポジトリ (Repository)
- レジストリの中に存在する「特定のプロジェクトやソフトウェアのコンテナイメージの集合」です。
- 一つのリポジトリには、通常、特定のソフトウェアやサービスに関連する複数のイメージがタグ(バージョン)付きで保存されます。
- 例:
nginx
というリポジトリには、nginx:1.21
やnginx:1.22
のようなバージョンが含まれます。
3. コンテナイメージ
- コンテナイメージは、ソフトウェアとその実行環境(ライブラリや設定など)のパッケージです。これを元にコンテナが動作します。
構造の例
- レジストリ: Docker Hub
- リポジトリ:
library/nginx
- イメージ:
nginx:1.21
nginx:1.22
例文でイメージする
- 「レジストリにアクセスして、
nginx
リポジトリから最新バージョンのコンテナイメージをプルする」 → Docker コマンドで表すと:
まとめると、レジストリは倉庫、リポジトリはその中の棚、イメージはその棚に置かれた具体的なアイテムのようなものです!
公共レジストリ
- Docker Hub: Dockerが提供する公共レジストリで、Apache、MySQL、Jenkinsなどの主要なOSSや、コミュニティが開発したカスタムイメージを多数ホストしている。
- 注意点:
- コミュニティ提供の一部イメージはセキュリティを考慮しておらず、プロダクション環境での利用にはリスクがある。
- 例: ルートアクセスが必要なコンテナや、ShellShock脆弱性を含むツールが含まれる可能性がある。
Red Hatの公共レジストリのメリット
- 信頼性: Red Hatが信頼できるソースからビルド。
- オリジナル依存関係: パッケージの改ざんがなく、既知のライブラリのみを含む。
- 脆弱性フリー: 既知の脆弱性を排除。
- RHEL互換: Red Hat Enterprise Linuxプラットフォームとの完全な互換性。
- Red Hatサポート: スタック全体の商業的サポートを提供。
プライベートレジストリ
- チームが内部利用のためにカスタムコンテナイメージを配布する場合、プライベートレジストリを使用する方が適切。
- RHELホストでプライベートレジストリを使用するには、
/etc/sysconfig/docker
ファイルのADD_REGISTRY
変数を更新する必要がある。
設定例
以下のように設定:
- 設定を有効にするには、Dockerデーモンの再起動が必要:
セキュリティ接続の設定
- 信頼できる閉鎖環境では、
/etc/sysconfig/docker
に以下を追加してセキュリティなし接続をサポートできる:
レジストリへのアクセス方法
DockerデーモンはDockerコマンドを介してRESTful APIでコンテナイメージレジストリにアクセスする。
- コマンド:
主要オプション
オプション | 説明 |
--automated=true | Dockerfileを使った自動ビルドイメージのみ表示 |
--no-trunc=true | 出力を省略せず全体を表示 |
--stars=N | 指定したスター数以上のイメージを表示 |
注意点
- 最大25件までの検索結果しか表示されず、利用可能なタグは一覧に含まれない。
- RESTful APIを使用することで制限を克服できる。
REST APIは、
curl
などのHTTPツールを使ってレジストリ情報を取得し、Dockerクライアントの問題をトラブルシュートする際に便利。違いのまとめ
特徴 | Docker Registry | Docker Hub |
用途 | プライベートなレジストリ、企業内で使用 | パブリックおよびプライベートリポジトリ |
対象ユーザー | 企業、開発チーム、プライベートユーザー | 個人ユーザー、開発者、企業 |
リポジトリの管理 | 企業内で管理される、カスタムイメージが多い | オープンソース、他ユーザーと共有されることが多い |
アクセス制限 | 企業内や認証されたユーザーのみアクセス可 | パブリックに公開されたものも多く、認証が必要な場合も |
イメージの取得方法 | オンプレミスでの運用が多い | Docker HubのWebインターフェースからも取得可能 |
コンテナイメージ管理に関する手順
1. レジストリに保存されているコンテナイメージの一覧取得
特定のレジストリからイメージ一覧を取得するには、REST APIを使用します。
n
パラメータを指定することで、取得するイメージ数を制御できます。コマンド例
出力例
2. イメージのタグ情報を取得
特定のイメージに関連するタグ一覧を取得するには、以下のAPIを使用します。
GET /v2/<リポジトリ名>/tags/list
手順
- ユーザー名とパスワードを定義
- 認証トークンを取得
- リポジトリ一覧を取得
- タグ情報の取得
3. プライベートレジストリでのイメージ検索
プライベートレジストリでイメージを検索するには、
docker-registry-cli
スクリプトを使用します。コマンド例
- すべてのイメージを一覧表示
出力例:
- 特定文字列で検索
出力例:
4. コンテナイメージの取得 (Pull)
Dockerコマンドを使用して、レジストリからイメージを取得します。
コマンド構文
オプション例
-all-tags=true
: リポジトリ内のすべてのタグを取得
-disable-content-trust=true
: イメージの検証をスキップ
コマンド例
5. キャッシュされたイメージの一覧確認
ホストにキャッシュされたコンテナイメージを確認するには、以下のコマンドを使用します。
コマンド例
出力例
参考リンク
以下はクイズを日本語で整理した内容です。
シナリオ
- 環境設定
- RHELホストに Docker デーモンがインストールされており、以下の内容の
/etc/sysconfig/docker
ファイルがある: registry.access.redhat.com
とdocker.io
にはレジストリが稼働している。- 両レジストリは有効な証明書を持ち、バージョン1のレジストリを使用。
- まだイメージはデーモンにダウンロードされていない。
- イメージ情報
registry.access.redhat.com
のイメージ:nginx/1.0
mysql/5.6
httpd/2.2
docker.io
のイメージ:mysql/5.5
httpd/2.4
クイズ
1. 次のコマンドのうち、registry.access.redhat.com
からダウンロード可能な mysql
イメージを検索する正しいコマンドを2つ選びなさい。
a.
docker search registry.access.redhat.com/mysql
b.
docker images
c.
docker pull mysql
d.
docker search mysql
正解
ad
2. httpd
コンテナイメージのすべてのタグを表示するコマンドはどれですか?
a.
docker search httpd
b.
docker images httpd
c.
docker pull --all-tags=true httpd
d. タグを検索するDockerコマンドは存在しない。
正解
d
3. 次のコマンドのうち、タグ 2.2
の httpd
イメージをダウンロードする正しいコマンドを2つ選びなさい。
a.
docker pull httpd:2.2
b.
docker pull httpd:latest
c.
docker pull docker.io/httpd
d.
docker pull registry.access.redhat.com/httpd:2.2
正解
ad
4. 以下のコマンドを実行した後、docker images
コマンドの出力結果はどれですか?
- 選択肢
- Option 1:
- Option 2:
- Option 3:
- Option 4:
正解
3
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/144d7ae8-88e2-80f5-a760-edc79c7a1cdf
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章