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 に認証情報を提供する方法には、どちらも以下の手順で説明されています。

手順

  1. クライアントを登録し、4章Red Hat Update Infrastructure の登録およびサブスクリプションの割り当て の手順を使用してサブスクリプションを取得します。
  2. または、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 セクションを参照してください。

  3. デフォルトの 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 を参照してください。

  4. 必要に応じて、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 でコメントアウトされた行をコメントにしたまま、ログインのみを設定します。次に、新規コンテナーを追加するときに手動でパスワードを入力します。

  5. 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
  6. ad を押して、新しい Red Hat docker コンテナーを追加します。

    rhui (repo) => ad
    
    Enter the URL of the registry, for example http://registry.redhat.io
  7. 上記のコンテナーがデフォルト以外のレジストリーにある場合は、レジストリー URL を入力します。デフォルトのレジストリーを使用するには、何も入力せずに Enter キーを押します。
  8. レジストリーにコンテナーの名前を入力します。

    jboss-eap-6/eap64-openshift
  9. コンテナーの一意の ID を入力します。

    注記

    hui-manager は、コンテナーの名前をレジストリーから Pulp で使用できる形式に変換できます。これは、スラッシュとドットをアンダースコアに置き換えて行います。このような変換名を許可するには、Enter を押すか、または任意の名前を入力します。

    jboss-eap-6_eap64-openshift
  10. コンテナーの表示名を入力します。
  11. RHUI 設定でログインまたはパスワードを設定していない場合は、プロンプトが表示される場合があります。続行するのに必要な情報を入力します。
  12. 概要が表示されます。

    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)
  13. y を押して続行するか、n を押してキャンセルします。

    y
    Successfully added container JBoss_EAP_Container
  14. ^ を押して、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 リポジトリーの同期

手順

  1. s を押して、Synchronization Status 画面にアクセスします。
  2. sr を押して、個々のリポジトリーを即時に同期します。
  3. 同期するリポジトリーの数を入力します。
  4. c を押して選択を確認します。他のコマンドの場合は ? と入力します。
  5. 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.
  6. ^ を押して、Red Hat Update Infrastructure Management Tool のホーム画面に戻ります。

14.6.4. Docker クライアント設定の生成

クライアント設定 RPM は、RHUI から docker コンテナーをプルする必要のある RHUI クライアントを対象としています。RPM にはロードバランサーの証明書が含まれます。RPM をインストールする際に、以下を行います。

  • ロードバランサーを docker レジストリーとして追加します。
  • docker 設定を変更します。

手順

  1. e を押して Client Entitlement Management 画面にアクセスします。
  2. d を押して docker クライアント設定 RPM を作成します。
  3. 生成されるクライアント設定ファイルを保存するローカルディレクトリーへの完全パスを入力します。このディレクトリーが存在しない場合は作成されます。

    /root/
  4. RPM の名前を入力します。

    dockertest
  5. 設定 RPM のバージョン番号を入力します。デフォルトは 2.0 です。
  6. 設定 RPM のリリース番号を入力します。デフォルトは 1 です。
  7. 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 のインストール

手順

  1. RPM が保存されるディレクトリーに移動します。

    [root@rhua noarch]# cd /root/dockertest-2.0/build/RPMS/noarch/
  2. RPM をクライアントにコピーします。

    # scp dockertest-2.0-1.noarch.rpm <hostname_of_cli:path_on_cli>
  3. クライアントに切り替え、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 コマンドをテストする方法を説明します。

手順

  1. docker サービスを開始します。

    [root@cli01 ~]# systemctl start docker
  2. 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
  3. 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
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.