目次


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

Comments

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 とつながってください。

Twitter でフォローするコミュニティーに参加する著者のブログを読む


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

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