type
Post
status
Published
date
Nov 16, 2024
slug
summary
tags
DO285
EX188
Redhat
学習ノート
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.21nginx: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.0mysql/5.6httpd/2.2docker.ioのイメージ:mysql/5.5httpd/2.4
クイズ
1. 次のコマンドのうち、registry.access.redhat.com からダウンロード可能な mysql イメージを検索する正しいコマンドを2つ選びなさい。
a.
docker search registry.access.redhat.com/mysqlb.
docker imagesc.
docker pull mysqld.
docker search mysql正解
ad
2. httpd コンテナイメージのすべてのタグを表示するコマンドはどれですか?
a.
docker search httpdb.
docker images httpdc.
docker pull --all-tags=true httpdd. タグを検索するDockerコマンドは存在しない。
正解
d
3. 次のコマンドのうち、タグ 2.2 の httpd イメージをダウンロードする正しいコマンドを2つ選びなさい。
a.
docker pull httpd:2.2b.
docker pull httpd:latestc.
docker pull docker.io/httpdd.
docker pull registry.access.redhat.com/httpd:2.2正解
ad
4. 以下のコマンドを実行した後、docker images コマンドの出力結果はどれですか?
- 選択肢
- Option 1:
- Option 2:
- Option 3:
- Option 4:
正解
3
- Author:minami
- URL:https://www.minami.ac.cn/private-license/144d7ae8-88e2-80f5-a760-edc79c7a1cdf
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts





