[!NOTE]
docker-compose.yml の準備
docker-compose.yml
version: "3"
services:
frontend:
#image: konradkleine/docker-registry-frontend:v2
image: ekazakov/docker-registry-frontend
container_name: frontend
hostname: frontend
environment:
ENV_DOCKER_REGISTRY_HOST: backend
ENV_DOCKER_REGISTRY_PORT: 5000
ports:
- 5080:80
backend:
image: registry:2
container_name: backend
hostname: backend
restart: always
ports:
- "5000:5000"
#volumes:
# - ./var.lib.registry:/var/lib/registry
environment:
REGISTRY_STORAGE_DELETE_ENABLED: 'True'
Docker Registry 起動コマンド
docker compose up -d --build
ブラウザで http://localhost:5080/
を参照すると、Docker Registry に登録したコンテナを参照できます。削除ボタンも表示されて、押下もできるのですが、消えません。。。
とりあえず、ブラウザ操作では削除できなさそうなので、その内、Docker Registry API を調べて、API 手動実行で削除する方法を模索しようと思っています。
Docker Registry の使い方
とりあえず利用してみる
-
公開されているコンテナイメージを取得する
docker pull hello-world
-
プライベートリポジトリ向けのタグを打つ
docker tag hello-world localhost:5000/hello-world-local:1
-
プライベートポジトリに push する
# プライベートリポジトリにコンテナイメージを登録 docker push localhost:5000/hello-world-local:1 # ディスク上のコンテナイメージを削除 docker rmi localhost:5000/hello-world-local:1
-
プライベートリポジトリ登録コンテナの実行
docker run localhost:5000/hello-world-local:1
Dockerfile で作ったコンテナで利用する
ほとんど Docker Hub の方法と同じです。
-
Dockerfile の用意 (内容は適当です)
# Base Image FROM debian:latest # 必要なパッケージのインストール RUN apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y \ locales nginx \ && apt-get autoremove -y \ && apt-get autoclean -y \ && apt-get clean -y # localesの設定 RUN localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 ENV LANG="ja_JP.UTF-8" \ LANGUAGE="ja_JP:ja" \ LC_ALL="ja_JP.UTF-8" CMD ["nginx", "-g", "daemon off;"]
-
コンテナをビルドする
docker image build -t localhost:5000/nginx .
-
プライベートリポジトリに登録する
docker push localhost:5000/nginx
-
プライベートリポジトリ登録コンテナの実行
docker container run -d --rm -p 80:80 localhost:5000/nginx