Docker Registryをホストしてhtpasswdで認証する
- registry - Official Image | Docker Hub
- Native basic auth - Restricting access - Deploy a registry server | CNCF Distribution
htpasswdファイルの作成
htpasswdファイルを作成します。 registryイメージ(Distribution Registry)はbcrypt形式のパスワードのみサポートしているため、パスワードをbcrypt形式でハッシュ化する必要があります。
sudo apt install apache2-utilsmkdir authcd authhtpasswd -cB htpasswd myuser
永続化ディレクトリの作成
mkdir data
docker-compose.ymlファイルの作成
services:registry:image: registry:2restart: alwaysenvironment:REGISTRY_AUTH: htpasswdREGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswdREGISTRY_AUTH_HTPASSWD_REALM: Registry Realm# ports:# - "0.0.0.0:5000:5000"volumes:- ./data:/var/lib/registry- ./auth:/auth
コンテナの実行
sudo docker compose up -d
コンテナのTCP 5000番ポートでDocker Registry HTTP APIがリッスンします。
このポート宛にCloudflaredやリバースプロキシを設定して、https://docker.example.com
のようにサービスを公開します。
設定後、docker
コマンドから以下のように利用できます(プッシュ・プルいずれも認証が必要)。
sudo docker login -u myuser docker.example.comsudo docker build -t docker.example.com/myuser/myimage:0.1.0 .sudo docker push docker.example.com/myuser/myimage:0.1.0sudo docker pull docker.example.com/myuser/myimage:0.1.0