14.6. コンテンツ配信サーバーの Docker コンテンツの管理
14.6.1. Red Hat Update Infrastructure の Docker コンテンツ
Docker
コンテンツには、コンテナー、イメージ、およびプラットフォームイメージが含まれます。現時点で、docker
コンテンツには利用可能なエンタイトルメントの適用がありません。このような機能を準備するには、最初に docker
クライアントが X.509 証明書をサポートする必要があります。RHUI への影響は、ダウンロードまたは公開済みの docker
コンテンツが CDS のレジストリーで公開されていることです。
コンテナーはアプリケーションのサンドボックスです。各コンテナーは、必要な設定データを保持するイメージに基づいています。イメージからコンテナーを起動すると、書き込み可能な階層がこのイメージの上部に追加されます。コンテナーをコミットするたびに (docker commit
コマンドを使用)、変更を保存する新しいイメージ層が追加されます。
イメージは、変更されることのない読み取り専用レイヤーです。変更はすべて最上位の書き込み可能なレイヤーで行われ、新規イメージを作成することによってのみ保存できます。各イメージは、複数の親イメージに依存します。
プラットフォームイメージは、親のないイメージです。プラットフォームイメージは、コンテナー化されたアプリケーションの実行に必要なランタイム環境、パッケージ、およびユーティリティーを定義します。プラットフォームイメージは読み取り専用であるため、その上部にスタックされたコピーイメージに変更が反映されます。
14.6.2. Red Hat Update Infrastructure へのコンテナーの追加
次の手順を実行して、RHUI
経由の Docker が使用されるクライアントマシンに Docker
コンテナーを追加します。docker
にアクセスするには、Red Hat Enterprise Linux Extras
リポジトリーへのアクセスが必要です。
以前のリリースでは、RHUI は常に registry.access.redhat.com
からコンテナーを同期していました。バージョン 3.1.3 以降では、RHUI は registry.redhat.io
をデフォルトのオプションとして使用しますが、Quay.io
などの他のレジストリーからコンテナーを同期することもできます。
レジストリーは、多くの場合、すべてのコンテナーまたはプライベートコンテナーに認証を必要とします。registry.redhat.io
の場合、Red Hat の認証情報または レジストリーサービスアカウント の認証情報は常に使用する必要があります。RHUI は、コンテナーを同期できるようにするために有効な資格情報を必要とします。RHUI に認証情報を提供する方法には、どちらも以下の手順で説明されています。
手順
- クライアントを登録し、4章Red Hat Update Infrastructure の登録およびサブスクリプションの割り当て の手順を使用してサブスクリプションを取得します。
または、Subscription Management ツールを使用してシステムを登録し、
docker
パッケージをインストールすることもできます。必要なソフトウェアリポジトリーも有効にします。(pool_id
を、RHEL 7 サブスクリプションのプール ID に置き換えます。) 以下に例を示します。# subscription-manager register --username=rhnuser --password=rhnpasswd # subscription-manager list --available Find valid RHEL pool ID # subscription-manager attach --pool=pool_id # subscription-manager repos --enable=rhel-7-server-extras-rpms # subscription-manager repos --enable=rhel-7-server-optional-rpms
現在の RHEL 7 リリースおよび RHEL 7 Atomic Host リリースにはそれぞれ Docker の異なるバージョンが含まれます。
-
docker
: このパッケージには、RHEL の現在のリリースのデフォルトである Docker のバージョンが含まれます。Red Hat Enterprise Linux で利用可能な Kubernetes および OpenShift の現行バージョンと互換性があるより安定したバージョンの Docker が必要な場合は、このパッケージをインストールします。 docker-latest
: このパッケージには、新しいバージョンの Docker が含まれており、Docker の新機能と連携する場合に使用できます。このバージョンは、Red Hat Enterprise Linux の現在のリリースで利用可能な Kubernetes および OpenShift のバージョンと互換性がありません。docker
パッケージおよびdocker-latest
パッケージの内容とdocker-latest
パッケージを有効にする方法は、Red Hat Enterprise Linux リリースノート の Atomic Host および Containers セクションを参照してください。
-
デフォルトの
docker
パッケージをインストールして使用します (まだインストールされていない場合は、いくつかの依存パッケージも一緒にインストールします)。# yum install docker device-mapper-libs device-mapper-event-libs
Docker および Red Hat Enterprise Linux および Atomic Host の詳細は、Getting Started with Containers のセクション 1.3 Docker および Red Hat Enterprise Linux および Atomic Host の詳細は、Getting Started with Containers の Getting Started with Containers を参照してください。
必要に応じて、RHUI 設定でコンテナーレジストリーの認証情報を設定します。これを行うには、
/etc/rhui/rhui-tools.conf
ファイルを編集します。RHUI 3.1.3 以降をクリーンインストールしている場合、最後の数行には、docker 固有のオプションと便利なコメントが含まれる [docker] セクションが含まれます。以前のバージョンから更新した場合、このセクションは/etc/rhui/rhui-tools.conf.rpmnew
ファイルの最後にあり、rhui-tools.conf
ファイルにコピーできます。次のように、docker セクションの行のコメントを解除します。[docker] … docker_username: your_RH_login docker_password: your_RH_password
通常、registry.redhat.io とは異なる
レジストリー
から同期する場合は、それに応じてdocker_url
オプションとdocker_auth
オプションの値も変更します。または、設定ファイルにパスワードを表示したくない場合は、
docker_password
でコメントアウトされた行をコメントにしたまま、ログインのみを設定します。次に、新規コンテナーを追加するときに手動でパスワードを入力します。Red Hat Update Infrastructure Management Tool から、
r
を押して Repository Management 画面にアクセスします。-= Red Hat Update Infrastructure Management Tool =- -= Repository Management =- l list repositories currently managed by the RHUI i display detailed information on a repository a add a new Red Hat content repository ad add a new Red Hat docker container c create a new custom repository (RPM content only) d delete a repository from the RHUI u upload content to a custom repository (RPM content only) ur upload content from a remote web site (RPM content only) p list packages in a repository (RPM content only) Connected: rhua.example.com
ad
を押して、新しい Red Hat docker コンテナーを追加します。rhui (repo) => ad Enter the URL of the registry, for example http://registry.redhat.io
-
上記のコンテナーがデフォルト以外のレジストリーにある場合は、レジストリー URL を入力します。デフォルトのレジストリーを使用するには、何も入力せずに
Enter
キーを押します。 レジストリーにコンテナーの名前を入力します。
jboss-eap-6/eap64-openshift
コンテナーの一意の ID を入力します。
注記hui-manager
は、コンテナーの名前をレジストリーからPulp
で使用できる形式に変換できます。これは、スラッシュとドットをアンダースコアに置き換えて行います。このような変換名を許可するには、Enter
を押すか、または任意の名前を入力します。jboss-eap-6_eap64-openshift
- コンテナーの表示名を入力します。
- RHUI 設定でログインまたはパスワードを設定していない場合は、プロンプトが表示される場合があります。続行するのに必要な情報を入力します。
概要が表示されます。
The following container will be added: Registry URL: http://registry.redhat.io Container Id: jboss-eap-6_eap64-openshift Display Name: jboss-eap-6_eap64-openshift Upstream Container Name: jboss-eap-6/eap64-openshift Proceed? (y/n)
y
を押して続行するか、n
を押してキャンセルします。y Successfully added container JBoss_EAP_Container
-
^
を押して、Red Hat Update Infrastructure Management Tool のホーム画面に戻ります。
間違った認証情報を使用すると、コンテナーは追加されますが、同期することができません。この場合、コンテナーを RHUI から削除し、正しい認証情報で再び追加します。
認証情報は、RHUI に追加する各コンテナーのメタデータとして保存されます。パスワードを変更すると、資格情報が無効になり、コンテナーの同期を継続できなくなります。コンテナーのメタデータのパスワードを変更するには、RHUA ノードの次のコマンドを使用して MongoDB
でパスワードを変更します。
# mongo pulp_database --eval 'db.repo_importers.update({"config.basic_auth_password":"YOUR_OLD_PASSWORD"}, {$set:{config:{basic_auth_password:"YOUR_NEW_PASSWORD"}}}, {multi:true})'
または、RHUI から影響を受けるコンテナーをすべて削除し、新しいパスワードで再び追加します。
パスワードを変更するとき、古いパスワードを持っている場合は、/etc/rhui/rhui-tools.conf
ファイルでパスワードを変更することを忘れないでください。
14.6.3. Docker リポジトリーの同期
手順
-
s
を押して、Synchronization Status 画面にアクセスします。 -
sr
を押して、個々のリポジトリーを即時に同期します。 - 同期するリポジトリーの数を入力します。
-
c
を押して選択を確認します。他のコマンドの場合は?
と入力します。 y
を押して続行するか、n
を押してキャンセルします。The following repositories will be scheduled for synchronization: jboss-eap-6_eap64-openshift Proceed? (y/n) y Scheduling sync for jboss-eap-6_eap64-openshift... ... successfully scheduled for the next available timeslot.
-
^
を押して、Red Hat Update Infrastructure Management Tool のホーム画面に戻ります。
14.6.4. Docker クライアント設定の生成
クライアント設定 RPM は、RHUI から docker
コンテナーをプルする必要のある RHUI クライアントを対象としています。RPM にはロードバランサーの証明書が含まれます。RPM をインストールする際に、以下を行います。
- ロードバランサーを docker レジストリーとして追加します。
- docker 設定を変更します。
手順
-
e
を押して Client Entitlement Management 画面にアクセスします。 -
d
を押してdocker
クライアント設定 RPM を作成します。 生成されるクライアント設定ファイルを保存するローカルディレクトリーへの完全パスを入力します。このディレクトリーが存在しない場合は作成されます。
/root/
RPM の名前を入力します。
dockertest
-
設定 RPM のバージョン番号を入力します。デフォルトは
2.0
です。 -
設定 RPM のリリース番号を入力します。デフォルトは
1
です。 Docker コンテンツを提供するポートを入力します。デフォルトは
5000
です。Successfully created client configuration RPM. Location: /root/dockertest-2.0/build/RPMS/noarch/dockertest-2.0-1.noarch.rpm
14.6.5. クライアントへの RPM のインストール
手順
RPM が保存されるディレクトリーに移動します。
[root@rhua noarch]# cd /root/dockertest-2.0/build/RPMS/noarch/
RPM をクライアントにコピーします。
# scp dockertest-2.0-1.noarch.rpm <hostname_of_cli:path_on_cli>
クライアントに切り替え、RPM をインストールします。
[root@cli01 ~]# yum install dockertest-2.0-1.noarch.rpm Loaded plugins: amazon-id, rhui-lb, search-disabled-repos Examining dockertest-2.0-1.noarch.rpm: dockertest-2.0-1.noarch Marking dockertest-2.0-1.noarch.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package dockertest.noarch 0:2.0-1 will be installed --> Processing Dependency: docker-common for package: dockertest-2.0-1.noarch rhel-7-server-rhui-extras-rpms | 3.4 kB --> Running transaction check ---> Package docker-common.x86_64 2:1.10.3-59.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ========================================================================================================================= Package Arch Version Repository Size ========================================================================================================================= Installing: dockertest noarch 2.0-1 /dockertest-2.0-1.noarch 1.7 k Installing for dependencies: docker-common x86_64 2:1.10.3-59.el7 rhel-7-server-rhui-extras-rpms 63 k Transaction Summary ========================================================================================================================= Install 1 Package (+1 Dependent package) Total size: 64 k Total download size: 63 k Installed size: 4.7 k Is this ok [y/d/N]: y Downloading packages: docker-common-1.10.3-59.el7.x86_64.rpm | 63 kB 00:00:01 Running transaction check Running transaction test Transaction test succeeded Running transaction Installed: dockertest.noarch 0:2.0-1 Dependency Installed: docker-common.x86_64 2:1.10.3-59.el7 Complete!
14.6.6. クライアントでの docker pull コマンドのテスト
docker pull
コマンドは、コンテナーのコンテンツを使用します。以下の手順では、クライアントで docker pull
コマンドをテストする方法を説明します。
手順
docker
サービスを開始します。[root@cli01 ~]# systemctl start docker
docker pull
コマンドを実行します。[root@cli01 ~]# docker pull jboss-eap-6_eap64-openshift Using default tag: latest Trying to pull repository cds.example.com:5000/jboss-eap-6_eap64-openshift ... latest: Pulling from cds.example.com:5000/jboss-eap-6_eap64-openshift 30cf2e26a24f: Pull complete 99dd41655d8a: Pull complete 05d9aa366d71: Pull complete 39feddb214c9: Pull complete 76786100be04: Pull complete d48e1afdcad8: Pull complete Digest: sha256:5331cae5edaeede56c7e14bede8608229a89f73067d7373af246cabe4b8d4a24 Status: Downloaded newer image for cds.example.com:5000/jboss-eap-6_eap64-openshift:latest
docker pull
コマンドが失敗した場合は、rhui-manager container synchronization
ステータスを確認します。同期がまだ実行されていない可能性があり、同期するまで待機する必要があります。Using default tag: latest Trying to pull repository cds.example.com:5000/jboss-eap-6_eap64-openshift ... unknown: Not Found Trying to pull repository docker.io/library/jboss-eap-6_eap64-openshift ... Pulling repository docker.io/library/jboss-eap-6_eap64-openshift Error: image library/jboss-eap-6_eap64-openshift not found Error: image library/jboss-eap-6_eap64-openshift not found