4. Docker レジストリ
このラボでは Docker レジストリについて学習します。
テキストを参照しながら各問題にチャレンジしてください。
必要があればウェブで調べても構いません。
ステップ 1: 問題 1/8
Docker レジストリ (コンテナ レジストリ) とは何ですか。
- Github、GitLabなどのバージョン管理のためのコードホスティングプラットフォームの代替
- Dockerfile の保管場所
- 名前つき Docker イメージの保管・配布システム
- 上記すべて
Answer
名前つき Docker イメージの保管・配布システム
ステップ 2: 問題 2/8
デフォルトで Docker Engine はどのコンテナ レジストリからイメージを取得しますか。
- Google Artifact Registry
- Docker Hub
- Amazon Elastic Container Registry
- Azure Container Registry
- On-premises Registry
Answer
Docker Hub
Docker Hub は Docker Inc. によってホストされ提供されている Docker レジストリのサービスです。
ステップ 3: 問題 3/8
自身で構築したプライベート レジストリにログインするときに使用するコマンドは以下のどれですか。
- docker login <SERVER>
- docker sign-in <SERVER>
- docker load <SERVER>
- docker connect <SERVER>
Answer
docker login <SERVER>
ステップ 4: 問題 4/8
このホストにプライベート レジストリを作成してください。
- コンテナ名:
my-registry - ホストポート:
5000
Hints
プライベート レジストリを作成するには以下の設定で detached モードでコンテナを実行します。
- イメージ:
registry:2 - コンテナポート:
5000
また、実際の使用時には、可用性の観点から docker container run コマンドで --restart=always フラグを設定します。
Solution
docker container run -d -p 5000:5000 --name my-registry registry:2 を実行します。
ステップ 5: 問題 5/8
作成したプライベート レジストリに以下の 2 つのイメージを保存してください。
- イメージ:
nginx - イメージ:
httpd
レジストリのサーバー名は localhost:5000 で指定できます。 レジストリにイメージが保存できているかは curl -X GET localhost:5000/v2/_catalog で確認できます。
注意
まず最初に 2 つのイメージを pull する必要があります。
Hints
- イメージを保存する前に、保存先のプライベート レジストリのサーバー名を付加した別名のイメージを
docker image tagコマンドで作成します。 docker image pushコマンドを使用してイメージを保存します。
Solution
まずイメージを pull します。
docker image pull nginx
docker image pull httpd
次に、取得したイメージから別名のイメージを作成します。
docker image tag nginx localhost:5000/nginx
docker image tag httpd localhost:5000/httpd
イメージをプライベート レジストリに push します。
docker image push localhost:5000/nginx
docker image push localhost:5000/httpd
ステップ 6: 問題 6/8
registry:2 以外のイメージをこのホスト上からすべて削除してください。
Hints
docker image prune -a を実行することで、コンテナで未使用のイメージをすべて削除することができます。
ステップ 7: 問題 7/8
プライベート レジストリからイメージ localhost:5000/nginxを pull してください。
Solution
docker image pull localhost:5000/nginx を実行します。
ステップ 8: 問題 8/8
プライベート レジストリを削除します。 コンテナ my-registry を削除してください。
Hints
docker container stop コマンドを使用してコンテナを停止してから docker container rm コマンドでコンテナを削除します。
Solution
docker container stop my-registry
docker container rm my-registry
完了
チャレンジ完了!
お疲れ様でした!