Raspberry Pi で Docker Registry に Webインターフェイス を用意する

結論

Webインターフェイス を用いるためにはいくつかの選択肢がありますが、Raspberry Pi でも使えて*1、GitHub のスター数も考慮した結果、docker-registry-ui を用いることにしました。

github.com

Raspberry Pi で docker-registry-ui を用いるための docker-compose.yml

docker-compose.yml は以下のようになります。なお、Docker Registry 本体の部分については こちら で説明しているとおりです。

image の部分で joxit/docker-registry-ui:arm64v8-static と、arm64v8-static のタグを用いている のが Raspberry Pi で動かすためのポイントです。

version: '2'

services:
  registry:
    # https://hub.docker.com/_/registry?tab=tags&page=1&ordering=last_updated
    image: registry:2.7.1
    container_name: my_docker_registry
    environment:
      REGISTRY_HTTP_SECRET: ABCDEF1234567890
      REGISTRY_HTTP_TLS_CERTIFICATE: /certs/certificate.crt
      REGISTRY_HTTP_TLS_KEY: /certs/private.key
      REGISTRY_HTTP_RELATIVEURLS: "true"
      REGISTRY_AUTH: htpasswd
      REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
      REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
    volumes:
      - ./registry:/var/lib/registry
      - ./certs:/certs
      - ./auth:/auth
    ports:
      - 12345:5000
    restart: always
  ui:
    image: joxit/docker-registry-ui:arm64v8-static
    container_name: my_docker_registry_ui
    ports:
      - 54321:80
    environment:
      REGISTRY_URL: https://registry:5000
    restart: always

REGISTRY_URL の指定が重要

docker-compose.yml の中で REGISTRY_URL: https://registry:5000 と環境変数をしているところがポイントです。

CORS による接続失敗を避けるため、

  • REGISTRY_URL という変数名で指定をして
  • スキームには HTTPS を用い
  • Docker のネットワーク内での接続なので registry という名前で URL を指定している

というところが重要です。

補足

  • pull してくる Dockerイメージのタグを変更すれば、上記の内容は Raspberry Pi に限定することなく他の OS(パッケージ)に当てはめることができます
  • Docker Registry の各種設定は YAML ファイルで一括して行うことが推奨されています

参考

*1:arm 版が用意されていて

Powered by はてなブログ