基本 HTTP 認証でサポートされた Docker プライベート・レジストリーをセットアップする

2016年 8月 25日
PDF (226 KB)
 
Pradipta's photo

Pradipta Banerjee

Docker & Power Cloud Architect

Pradipta Banerjee is Docker & Power Cloud Architect, Linux Technology Center.

Docker レジストリーとは、Docker イメージの共有を可能にするサーバー・サイドのアプリケーションのことです。共有されるパブリック・レジストリーは Docker Hub 上でホストされます。企業のポリシーやファイアウォールの制限などによって、ホストされたパブリック・レジストリーにアクセスするという選択肢がない場合は、プライベート・レジストリーをデプロイすることもできます。レジストリーのコードはオープンソースであり、Apache License の下で利用できるようになっています。ホストされたパブリック・レジストリーとは異なり、プライベート・レジストリーには Web ユーザー・インターフェースがないことに注意してください。プライベート・レジストリーとは、Docker エンジンがイメージを処理するためのレジストリー API を提供するアプリケーションのことです。

この記事では、Red Hat Enterprise Linux (RHEL) 7.1 LE Linux ディストリビューションを実行する OpenPower サーバーに、TLS および HTTP 認証を使用する Docker プライベート・レジストリー (バージョン 2.x) をセットアップする方法を説明します。RHEL へのレジストリー・パッケージのインストールに関連する手順を除き、ここで説明する手順は、OpenPower サーバー上で実行される他のほとんどの Linux ディストリビューション (Ubuntu、Fedora など) にも適用されます。

可用性

 

最新の Docker レジストリー (バージョン 2.x) のソース・コードには、https://github.com/docker/distribution でアクセスできます。

  • レジストリー・パッケージのバージョン 2.x の名前は、Intel サーバーと PowerPC サーバー用の RHEL および Fedora では docker-distribution、
  • Intel サーバーと PowerPC サーバー用の Ubuntu では docker-registry となります。

以下の表に、PowerPC LE (ppc64le) プラットフォームに関連するパッケージの場所を記載します。

Linux ディストリビューションパッケージの場所
Fedora 23 以降Distro リポジトリー
Ubuntu 16.04Distro リポジトリー
RHEL 7.XUniversity of Campinas (Unicamp)
SLES 12 SPXDistro リポジトリー

1. Docker プライベート・レジストリー・パッケージを RHEL LE にインストールする

 

RHEL 7.1 LE 用にプリコンパイルされた Docker および Docker レジストリー (バージョン 2.1) のパッケージは、University of Campinas (unicamp) リポジトリー (ftp://ftp.unicamp.br/pub/linuxpatch/docker-ppc64/) から入手できます。これらのパッケージは、現状のままの形で提供されることに注意してください。

  1. 以下のコマンドを使用して、ご使用のシステムに unicamp レジストリーを追加します。
    # cat > /etc/yum.repos.d/unicamp-docker.repo <<EOF
    [unicamp-docker]
    name=Unicamp Repo for docker Packages
    baseurl=http://ftp.unicamp.br/pub/ppc64el/rhel/7_1/docker-ppc64el/
    enabled=1
    gpgcheck=0
    EOF
  2. パッケージをインストールします。
    # yum install -y docker-distribution

他の Linux ディストリビューションに Docker プライベート・レジストリー・パッケージをインストールする場合の注意事項

  • OpenPower サーバー用の Fedora にインストールするレジストリー・パッケージのバージョン 2.x の名前は docker-distribution です。
  • OpenPower サーバー用の Ubuntu にインストールするレジストリー・パッケージのバージョン 2.x の名前は docker-registry です。

使用しているディストリビューションに対応するパッケージをインストールしてください。その後の手順は、どのディストリビューションまたはサーバーを使用しているかを問わず、同じです。

2. ストレージを構成する

 

Docker レジストリー・パッケージをダウンロードしてインストールした後は、イメージ用のストレージを構成する必要があります。

  1. イメージを保管するためのディレクトリーを作成します。ディレクトリーを作成する場所は、ローカル・ディスクまたは外部ディスクでサポートされたマウント・ポイントであれば、指定したサーバー上のどこであってもかまいません。この例では、Docker イメージを保管するために使用するディスク上に、/data/ という別個のディレクトリーを作成します。
    # mkdir /data/registry_data
  2. htpasswd コマンドを使用して、HTTP アクセス制御ファイルを作成します。以下のコマンドは、htpasswd ツールが含まれる httpd-tools パッケージをインストールし、ユーザー regimguser 用の registry_passwd ファイルを作成します。必要に応じて、ファイル名およびユーザー名を置き換えてください。オプション -B は、パスワードの bcrypt 暗号化を使用するために指定しています。
    # yum install -y httpd-tools 
    # htpasswd -Bc /etc/registry/registry_passwd regimguser
  3. htpasswd は、RHEL ベースのシステムでは httpd-tools パッケージに、Ubuntu ベースのシステムでは apache2-utils パッケージに含まれています。

3. レジストリー構成ファイルを作成する

 

このセクションでは、レジストリー構成ファイルの作成方法を説明します。

  1. TLS を使用してレジストリーを保護するための証明書を作成し、その証明書をすべての Docker ホストにコピーします。証明書を生成する際は、CN として、必ずレジストリー FQDN を使用してください。

    リスティングを見るにはここをクリック

    # mkdir /certs/
    # openssl req  -newkey rsa:4096 -nodes -sha256 -keyout /certs/domain.key  -x509 -days 365 -out /certs/domain.crt
    Generating a 4096 bit RSA private key
    ..........................................................................................++
    [snip]
  2. 証明書をすべての Docker ホストにコピーして、以下に示す特定のパスに配置します。
    # mkdir -p /etc/docker/certs.d/registry.kube.com:5000/
    # cp domain.crt /etc/docker/certs.d/registry.kube.com:5000/ca.crt
  3. OS レベルで証明書を信頼し、CA リストを更新します。そのためのコマンドは、Linux ディストリビューションによって異なります。
    • RHEL および Fedora では、以下のコマンドを実行します。
      # cp domain.crt /etc/pki/ca-trust/source/anchors/registry.kube.com.crt
      # update-ca-trust
    • Ubuntu では、以下のコマンドを実行します。
      # cp domain.crt /usr/local/share/ca-certificates/registry.kube.com.crt
      # update-ca-certificates
  4. Docker デーモンを再起動します。
    # service docker restart

4. レジストリー・サーバーを起動する

 

以下のコマンド・ラインを使用してレジストリー・サーバーを起動します。

# REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt
REGISTRY_HTTP_TLS_KEY=/certs/domain.key screen -dmS registry registry /etc/registry/config.yml

REGISTRY_HTTP_TLS_CERTIFICATE および REGISTRY_HTTP_TLS_KEY は、レジストリー構成ファイルの一部として指定することもできます。プライベート・レジストリーのデフォルト構成ファイルは、/etc/registry/config.yml 内にあります。使用可能な構成オプションの詳細については、https://docs.docker.com/registry/configuration/ を参照してください。

以下に構成例を記載します。

# cat /etc/registry/config.yml
version: 0.1
storage:
  filesystem:
    rootdirectory: /data/registry_data
  delete:
    enabled: true
http:
  addr: registry.kube.com:5000
  host: https://registry.kube.com:5000
  tls:
      certificate: /certs/domain.crt
      key: /certs/domain.key
auth:
  htpasswd:
    realm: basic-realm
    path: /etc/registry/registry_passwd

以下のコマンドを実行してレジストリー・サーバーを起動します。

# screen -dmS registry registry /etc/registry/config.yml

5. レジストリー・サーバーへのアクセスを確認する

 

Docker ホストのいずれかから、レジストリー・サーバーにログインできることを確認します。ログインする際は、htpasswd ツールで作成したユーザー ID とパスワードを使用してください。

# docker login https://registry.kube.com:5000

これで、環境で Docker プライベート・レジストリーを使用できる状態になりました。

つながる

 

IBM Linux Technology Center (LTC) は、Linux オープンソース開発コミュニティーと連携して取り組む IBM オープンソース・ソフトウェア開発者からなるチームです。Linux の技術コンピテンシーの中心的役割を果たす LTC とつながってください。


関連トピック:Linux on Power 向け DockerOpenPower at Unicamp (University of Campinas)Docker ホーム

コメントの追加

注意: HTML コードは、コメント内ではサポートされません。


残り 1000 文字

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=1036546
ArticleTitle=基本 HTTP 認証でサポートされた Docker プライベート・レジストリーをセットアップする
publish-date=08252016