2025年5月18日日曜日

docker registry で Let's Encrypt の証明書を使って SSL 通信する方法

docker registry で Let's Encrypt の証明書を使って SSL 通信する方法

概要

わざわざ insecure-registries に記載するのが面倒なので証明書がある場合は SSL 化しましょう

環境

  • Ubuntu 22.04
  • docker registry 2.8.3
  • docker 27.0.3

auth_config.yml

server:
  addr: ":5000"
  certificate: "/certs/fullchain.pem"
  key: "/certs/privkey.pem"

pem ファイルは Let’s Encrypt で取得したものをそのまま利用します

compose.yml

services:
  registry:
    image: registry:2
    ports:
      - "5000:5000"
    volumes:
      - "/path/to/local/registry:/var/lib/registry"
      - "/path/to/auth_config.yml:/config/auth_config.yml"
      - "/etc/letsencrypt/live/your.domain.com/privkey.pem:/certs/privkey.pem"
      - "/etc/letsencrypt/live/your.domain.com/fullchain.pem:/certs/fullchain.pem"
    environment:
      - REGISTRY_HTTP_TLS_CERTIFICATE=/certs/fullchain.pem
      - REGISTRY_HTTP_TLS_KEY=/certs/privkey.pem
    restart: always

ポイントはファイルを配置するだけではなくちゃんと環境変数の REGISTRY_HTTP_TLS_CERTIFICATE と REGISTRY_HTTP_TLS_KEY で配置したパスを指定する点です

起動

  • docker compose up -d

動作確認

insecure-registries なしで docker login できることを確認しましょう
もしくは

  • curl https://your.domain.com:5000/v2/_catalog

で SSL のエラーにならないことを確認しましょう

最後に

SSL を有効にした場合は逆に http が使えなくなるので注意しましょう

参考サイト

0 件のコメント:

コメントを投稿