🧃

ローカルでDocker Registryを起動する

2022/08/27に公開

はじめに

  • ローカルにDocker Registryを起動します。
  • BASIC認証を設定します。
  • 他サーバから利用する場合はリバースプロキシでHTTPS化を実施する。
  • 以下のシェルや各種ファイルは/mnt/registry/に配置する想定。

情報元

https://matsuand.github.io/docs.docker.jp.onthefly/registry/deploying/

認証情報の作成

make_auth.sh
#!/bin/bash 

cd /mnt/registry/

mkdir -p auth
rm -f auth/htpasswd

docker run --rm --entrypoint htpasswd registry:2.6.2 -Bbn test1 4WRNKQtamzfLXTvpEvq6jYTi >> auth/htpasswd
docker run --rm --entrypoint htpasswd registry:2.6.2 -Bbn test2 8787wzAb6PtwKBsBvdqJirnM5 >> auth/htpasswd
# 必要に応じて追加

Docker Registryの起動

start.sh
#!/bin/bash

cd /mnt/registry/
umask 000
RPORT=5000

mkdir -p /mnt/registry/data

docker run -d \
  --name registry \
  --restart=always \
  -v `pwd`/auth:/auth \
  -p 127.0.0.1:${RPORT}:${RPORT} \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
  -e REGISTRY_HTTP_ADDR=0.0.0.0:${RPORT} \
  -v /mnt/registry/data:/var/lib/registry \
  registry:2.6.2

Docker Registryの停止

end.sh
#!/bin/bash

docker stop registry
docker container rm registry

ログイン

docker login 127.0.0.1:5000
# user = test1
# password = 4WRNKQtamzfLXTvpEvq6jYTi

その他

  • registry:2.6.2か2.6以外にするとhtpasswdがないので注意が必要です
  • Docker Swarmでローリングアップデートを行うためには必ずDocker Registryが必要です。
  • 個人的にはcomposerより、Swarm + Registryのほうが好みです。

Discussion