第50回 Dockerプライベートレジストリにユーザー認証を付ける(活用編)【最終回】古賀政純の「攻めのITのためのDocker塾」(1/2 ページ)

前回は、Dockerプライベートレジストリ(DPR)の構築手順をご紹介しました。今回は、実際にユーザー認証付きのDPRを使用してみましょう。

» 2017年10月16日 08時00分 公開

ユーザー認証付きのDockerプライベートレジストリに接続

 さて、最終回となる今回は、準備編で、既にユーザー認証付きのDPR(Dockerプライベートレジストリ)が構築できており、かつ、この連載の第47回で紹介した手順でクライアントマシン(IPアドレスは、172.16.1.101/16)が設定できていることを前提に解説します。

 DPRマシンとクライアントマシンでは、接続先となるDPRで設定ファイルの記述を確認しておきます。以下、DPRマシンのコマンドプロンプトを「dpr #」、クライアントマシンのコマンドプロンプトを「client #」で表すとします。

dpr # cat /etc/docker/daemon.json
{ "insecure-registries":["172.16.1.100:5000"] }

client # cat /etc/docker/daemon.json
{ "insecure-registries":["172.16.1.100:5000"] }

Dockerプライベートレジストリ(DPR)へのDockerイメージの登録

 DPRに登録するためのDockerイメージをインターネットから入手します。今回は、CentOS 6.9ベースのOSテンプレートを用いたDockerイメージを入手してみました。

dpr # docker pull centos:6.9

 Dockerイメージ「centos:6.9」は、DPRが稼働するマシン上に保管されていますが、まだDPRに登録されているわけではありません。DPRにDockerイメージを登録するために、Dockerイメージにタグを付与します。DPRのIPアドレスとポート番号の組み合わせは、「172.16.1.100:5000」ですので、タグは、以下のように付与します。

dpr # docker tag centos:6.9 172.16.1.100:5000/centos:6.9

 Dockerイメージ「centos:6.9」に対して、「172.16.1.100:5000/centos:6.9」というタグを付与できましたので、タグが付与されたDockerイメージを確認します

dpr # docker images
REPOSITORY                 TAG       IMAGE ID            CREATED             SIZE
...
172.16.1.100:5000/centos   6.9       573de66f263e        5 months ago        195MB
centos                     6.9       573de66f263e        5 months ago        195MB

docker pushによるDockerイメージの登録

 Dockerイメージ「centos:6.9」に、タグ「172.16.1.100:5000/centos:6.9」が付与されましたので、このタグを指定し、DockerイメージをDPRに登録します。DPRサーバの /hostdir/auth_server/config/auth_config.yml ファイルに記述されているユーザー名とパスワードでログインします。まずは、ユーザー admin でログインします。

dpr # docker login https://172.16.1.100:5000
Username (admin): admin
Password:
Login Succeeded

 「Login Succeeded」が表示され、DPRに接続ができました。ユーザー adminは、DPRへのDockerイメージの登録と入手が可能ですので、「docker push」コマンドにより、タグをつけたDockerイメージをDPRに登録してみます。

dpr # docker push 172.16.1.100:5000/centos:6.9

 これでDPR(172.16.1.100:5000)にcentos:6.9のDockerイメージが登録されました。次に、ユーザー koga でDPRにログインし、docker pushを使ったDockerイメージの登録ができないことも確認します。今回は、テスト用のDockerイメージとして、「opensuse:latest」を使用しました。まずは、DPRにDockerイメージ「opensuse:latest」を保管し、タグを付与します。

dpr # docker pull opensuse:latest
dpr # docker tag opensuse:latest 172.16.1.100:5000/opensuse:latest
dpr # docker images
REPOSITORY                    TAG       IMAGE ID         CREATED             SIZE
172.16.1.100:5000/opensuse    latest    19b630b6033c     12 days ago         108MB
...

 ユーザー koga でDPRにログインします。

dpr # docker login https://172.16.1.100:5000
Username (admin): koga
Password:
Login Succeeded

 ユーザー koga で、DPRにDockerイメージ「172.16.1.100:5000/opensuse:latest」を登録してみます。

dpr # docker push 172.16.1.100:5000/opensuse:latest
The push refers to a repository [172.16.1.100:5000/opensuse]
adf60109318a: Preparing
denied: requested access to the resource is denied ←docker pushが拒否されることを確認

 ユーザー koga で、Dockerイメージ「172.16.1.100:5000/opensuse:latest」が登録できないことが確認できましたので、期待通りの動作です。ユーザー admin でDockerイメージ「172.16.1.100:5000/opensuse:latest」がdocker pushできることを確認します。

dpr # docker login https://172.16.1.100:5000
Username (koga): admin
Password:
Login Succeeded
dpr # docker push 172.16.1.100:5000/opensuse:latest

 さらに、ユーザー tanaka でログインし、DPRを使ったdocker pushもdocker pullもできないことを確認してください。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ