概要
書籍「15Stepで習得 Dockerから入るKubernetes」で Private Registry の立ち上げ手順が紹介されている.
今回 Private Registry を立ち上げたものの、
WEB-UI によって http://<IP>:5043/repositories/
にアクセスすると、
Private Registry に登録しておいた Docker Image が一切表示されなかった.
この原因の調査記録と対策の記録を (無断転載になるといけないので) 大まかに書き残しておく.
状況
Private Registry を立てたマシンの名前を my_server
とする.
調査記録
docker-compose logs front-end
から切り分けを開始した.
次に、front-end コンテナにログインして以下を実行することで原因が判明した.
具体的にはコンテナの中ではマシン名 my_server
の名前解決ができていないだけであった.
切り分けに必要なツールをインストールする
# apt update
# apt install curl
# apt install iputils-ping
curl を使って Private Registry API を実行する (前者は成功、後者は失敗した)
# curl --insecure -u <ユーザ名>:<パスワード> https://<IP>:5043/v2/_catalog
# curl --insecure -u <ユーザ名>:<パスワード> https://my_server:5043/v2/_catalog
対策
今回は物理ホストの /etc/hosts を docker コンテナ側にも ReadOnly で見せるようにした
略
front-end:
image: "konradkleine/docker-registry-frontend:v2"
container_name: myfrontend
ports:
- 9080:80
volumes:
+ - /etc/hosts:/etc/hosts:ro
environment:
ENV_DOCKER_REGISTRY_HOST: my_server
ENV_DOCKER_REGISTRY_PORT: 5043
ENV_DOCKER_REGISTRY_USE_SSL: 1
以上.