htpasswdファイルの作成

htpasswdファイルを作成します。 registryイメージ(Distribution Registry)はbcrypt形式のパスワードのみサポートしているため、パスワードをbcrypt形式でハッシュ化する必要があります。

sudo apt install apache2-utils

mkdir auth
cd auth

htpasswd -cB htpasswd myuser

永続化ディレクトリの作成

mkdir data

docker-compose.ymlファイルの作成

services:
  registry:
    image: registry:2
    restart: always
    environment:
      REGISTRY_AUTH: htpasswd
      REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
      REGISTRY_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.com

sudo docker build -t docker.example.com/myuser/myimage:0.1.0 .
sudo docker push docker.example.com/myuser/myimage:0.1.0

sudo docker pull docker.example.com/myuser/myimage:0.1.0