Dockerを利用していると独自イメージを作成して利用するケースが出てくると思いますが、その時に必要となるのがDockerレジストリ。
Docker Hubがインターネット上で利用可能ですが、セキュリティが厳しい環境では利用できないことも。
そんなときはプライベートのレジストリを利用すれば解決!
本記事ではプライベートな環境で利用可能な独自のレジストリを構築&利用する方法を紹介します。
準備
コンテナを利用してレジストリを構築するので、DockerエンジンおよびDocker-Composeをあらかじめインストールしておきます。
WindowsのDockerインストール手順はこちらの過去記事を参考にしてください。
構築
今回はDockerレジストリに加えて、ブラウザからリポジトリの内容が閲覧可能となるフロントエンドも合せて導入します。
まずはdocker-composeの定義ファイルを作成します。
任意のフォルダに以下の内容をコピペしたファイルを「docker-compose.yml」という名称で保存します。必要に応じて内容は書き換えてください。
version: '3.8'
services:
registry:
image: registry:latest
container_name: registry
restart: always
hostname: registry
ports:
- '5000:5000'
volumes:
- './registry:/var/lib/registry'
registry-frontend:
image: konradkleine/docker-registry-frontend:v2
container_name: registry-frontend
hostname: registry-frontend
environment:
ENV_DOCKER_REGISTRY_HOST: registry
ENV_DOCKER_REGISTRY_PORT: 5000
ports:
- 8080:80
次にレジストリのコンテナがマウントするフォルダを作成します
mkdir registry
完了したらdocker-composeで起動します
docker compose up -d
こんな感じで出力されれば起動OKです
Starting registry ... done Creating registry-frontend ... done
動作確認
フロントエンド動作確認
まずはフロントエンドが動作しているか確認してみましょう。
http://ホスト名:8080/
にアクセスします。
以下のような画面が出れば正常に起動しています。
コンテナイメージのpush
実際にコンテナイメージをpushしてみます。
まずはタグ付けです。
docker tag イメージID or イメージ名 レジストリのホスト名:ポート番号/任意の名前
今回は以下の条件でやっていきます!
- ホスト名・・・registry
- ポート番号・・・5000
- イメージ名・・・redis:latest
実際のコマンドはこんな感じになります。
docker tag redis:latest registry:5000/redis
上記ができたらpushします
docker push registry:5000/redis
以上でpush完了です。
再度ブラウザでフロントエンドを見てみましょう。
トップページの「Browse respositories」をクリックすると・・・
正常にpushされていますね!
コンテナイメージのpull
それではpullしてみます。
Dokcerが入った別のマシンで以下コマンドを実行し、問題なくpullできることを確認します。
docker pull registry:5000/redis
問題なくpullできたら、動作確認は完了です!
まとめ
コンテナを利用した開発には欠かせないDockerリポジトリを構築する方法でした!
意外と簡単に構築できるにも関わらず、とても便利なので、ぜひ利用してみてくださいね(^ ^)
コメントを残す