コラム

[Docker]認証付きDocker Registryを構築する②

認証付きDocker Registryを構築する①ではDocker Registryサーバの構築方法を書きました、今回はクライアントの設定と実際にDocker イメージの登録、取得をやってみたいと思います。(今回はWindows環境でやります)

クライアント環境

Windows10
Docker Desktop 4.3.2
Docker Engine v20.10.11

TLS設定

Dockerの環境が構築されていれば、後設定するのはTLSの設定だけです。
Windows版でのTLSのクライアント設定は以下の通りです。

1.DockerRegistryサーバの際に作成したDockerRegistry.crtファイルをクライアントにコピーする。
2.DockerRegistry.crtをダブルクリックし証明書のインストールを行う。

ダブルクリックすると上の画面が出てくるので証明書のインストールボタンを押下します。

証明書のインストールボタンを押下して今回は「現在のユーザ」を選択し次へボタンを押下します。

上の画面が出てくるので「証明書の種類に基づいて、自動的に証明書ストアを選択」を選択し次へボタン押下します。

上の画面が出てくるので完了を押下します。

上の画面が出てくれば正常にインポート完了です。

Docker Registryにイメージを登録、取得してみる

Docker Registryへのログイン

まずはDocker Registryへログインします。
Docker Auth構築の際にauth_config.ymlで定義したユーザ、パスワードでログインします。

users:
  "admin":
    password: "$2y$05$Hk8RjMLX9NxGDVLa9CFTEezeeGFuYTIi.V8HbJPu54Bl8GGwoag/."  # pass
  "user01":
    password: "$2y$05$XBhMKmTlC33TUgLS8BCCEOTZM76JTBxegGdktKSGyCsgt2f9rlw3e"  # 123

取り敢えずadminユーザでログインします。

docker login 192.168.10.107:5000

Login Succeededと出力されたらログイン成功です。
※Error response from daemon: Get "https://192.168.10.107:5000/v2/": unauthorized: authentication requiredと出力
されたらユーザIDかパスワードが間違っています。

イメージの登録、取得

ログインが成功したらDocker イメージを登録してみます。
今回は既にDockerHubにあるイメージの「Centos7」を取得しそれを登録したいと思います。

#Docker HubからCenos7イメージを取得

docker pull centos:centos7

#イメージが取得出来てるか確認、以下のようなイメージがあるはずです。
#centos  centos7   eeb6ee3f44bd   4 months ago    204MB

docker images

#自前のDocker Registryに登録する為のタグ付けをする
#サーバがIP192.168.10.107、ポート5000なので、以下のような形式になります。centos7の部分は任意

docker tag centos:centos7 192.168.10.107:5000/centos7

#登録処理 成功すると以下の様な結果が出力されるはずです。
#The push refers to repository [192.168.10.107:5000/centos7]
#174f56854903: Pushed
#latest: digest: sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f size: 529

docker push 192.168.10.107:5000/centos7


以上が登録処理になります。
では次に取得をしてみたいと思います。

#ローカルにあるdockerイメージを削除しておきます。
#eeb6ee3f44bd部分はイメージID指定

docker rmi -f eeb6ee3f44bd

#dockerイメージ取得
docker pull 192.168.10.107:5000/centos7

#dockerイメージの確認。以下のようなイメージがあるはずです。
#192.168.10.107:5000/centos7   latest    eeb6ee3f44bd   4 months ago    204MB

docker images

#起動
docker run -it -d --name centos7 192.168.10.107:5000/centos7

#起動確認。以下のような出力があるはずです。
#52fb8ca2afb9  192.168.10.107:5000/centos7   "/bin/bash"   9 seconds ago   Up 9 seconds   centos7
docker ps

以上がイメージ取得処理になります。

権限の確認

権限管理が正常にされているかの確認もしておこうと思います。
二つのユーザにそれぞれ権限を与えています。
auth_config.ymlでadminには全権限、user01には取得(pull)権限のみ与えています。
それぞれ確認してみたいと思います。

acl:
  - match: {account: "admin"}
    actions: ["*"]
    comment: "Admin has full access to everything."
  - match: {account: "user01"}
    actions: ["pull"]
    comment: "User \"user01\" can pull stuff."

adminでの登録、取得は上記のイメージの登録、取得が正常に出来てれば問題ないですので、user01で確認して行きます。

まずは登録処理から

#adminのログイン情報を破棄
docker logout 192.168.10.107:5000

#ログイン
docker login 192.168.10.107:5000
Username:user01
Password:123

#イメージを登録してみる。adminerをdockerHubから取得し、登録処理をする。
docker pull adminer

#イメージの確認、以下のようなイメージがあるはずです。
#michalhosna/adminer     latest    1db560323a77   11 months ago   21.6MB

docker images

#自前のDocker Registryに登録する為のタグ付けをする
docker tag michalhosna/adminer 192.168.10.107:5000/adminer

#登録処理 権限が与えられてないので以下の様な結果が出力されるはずです。
#denied: requested access to the resource is denied

docker push 192.168.10.107:5000/adminer

次は取得処理を試してみます。
上記で登録したcentos7の取得します。やり方はadminの時にやった方法と同じです。

#dockerイメージ取得
docker pull 192.168.10.107:5000/centos7

#dockerイメージの確認。以下のようなイメージがあるはずです。
#192.168.10.107:5000/centos7   latest    eeb6ee3f44bd   4 months ago    204MB

docker images

#起動
docker run -it -d --name centos7 192.168.10.107:5000/centos7

#起動確認。以下のような出力があるはずです。
#52fb8ca2afb9  192.168.10.107:5000/centos7   "/bin/bash"   9 seconds ago   Up 9 seconds   centos7
docker ps

取得が成功すれば設定は正常に出来ています。

以上、プライベートのDocker Registryの作成方法を紹介しました。
参考になれば幸いです。

この記事をシェアする
  • Facebookアイコン
  • Twitterアイコン
  • LINEアイコン

お問い合わせ ITに関するお悩み不安が少しでもありましたら、
ぜひお気軽にお問い合わせください

お客様のお悩みや不安、課題などを丁寧に、そして誠実にお伺いいたします。

お問い合わせ
お電話でのお問い合わせ 03-5820-1777(平日10:00〜18:00)
よくあるご質問