Docker Private Registy#
注釈
codeの$ xxx
はhost OS内,# xxx
はdocker container内のターミナルを示す
0. OUTLINE#
1. Install Docker & Docker Compose#
公式ページ 等を参考にして頑張る.
インストールされているか確認
docker:
$ docker -v
Docker version 20.10.3, build ...
docker-compose:
$ docker-compose -v
docker-compose version 1.28.2, build ...
2. Docker Compose#
下記添付ファイルをDownload: docker-compose.yml
$ curl http://kobe-kosen-robotics.org:
(option): docker-compose.ymlを編集
$ vi docker-compose.yml version: "3.8" services: docker-registry: image: registry:2.7.1 restart: always stdin_open: true tty: true container_name: docker-registry # container_nameの設定 volumes: - /home/admin/docker_hub/registry:/var/lib/registry # docker imageの共有保存先を指定 environment: - REGISTRY_STORAGE_DELETE_ENABLED=true # 登録したimageの削除許可 ports: - "5000:5000" # 公開ポート設定 networks: # container間のnetwork設定 registry-net: ipv4_address: 192.168.123.2 # docker registry Web docker-registry-frontend: depends_on: - docker-registry image: konradkleine/docker-registry-frontend:v2 restart: always stdin_open: true tty: true container_name: docker-registry-frontend # container_nameの設定 environment: #- ENV_DOCKER_REGISTRY_HOST=docker-registry #ENV_DOCKER_REGISTRY_HOST: "docker-registry" - ENV_DOCKER_REGISTRY_HOST=192.168.123.2 # docker-registryのip or hostPCのip - ENV_DOCKER_REGISTRY_PORT=5000 # docker-registryの公開したport ports: - "8080:80" # 公開ポートの指定 networks: # container間のnetwork設定 registry-net: ipv4_address: 192.168.123.3 networks: # conntainer間のnetwork作成 registry-net: driver: bridge ipam: driver: default config: - subnet: 192.168.123.0/24 # コンテナ間で通信をするため,仮想ネットワーク(192.168.123.0)を作成. # 各コンテナにip addressを割り振ることで, host-firewallを経由することなく,直接通信ができる # ref:https://knowledge.sakura.ad.jp/26522/ # ref(option):https://sleepless-se.net/2019/09/15/multi-docker-compose-network-setting/
3. FireWall(Ubuntu)#
Ubuntu以外を利用している場合は, 各OSのFireWall設定に従う.
FireWallのstatusを確認
$ sudo ufw status
今回は2. Docker Composeより,
port: 5000, 8080
を使用許可する$ sudo ufw allow 5000 8080
もう一度 1. FireWallのstatusの確認を行い,許可した番号が追加されていることを確認する.
4. Creates, Starts and Attachs to Container#
コンテナの作成,起動&コンテナに入る:
$ docker-compose up
コンテナに入る必要がない(起動するだけ)の場合, detach optionを追加:
$ docker-compose up -d
5. Pushing an image#
Create tag
pushをする前に,どこのregistryで何という名前かを示す必要があるため,tag付けをする$ docker tag [pushするimage] [registry起動PCのIPaddress]:[公開port]/[作成者等]/[image名]:[tag(version)]
Push image
tag付けしたimageを選択して, pushする$ docker push [registry起動PCのIPaddress]:[公開port]/[作成者等]/[image名]:[tag(version)]
Example
registry起動PCで実行した場合は, IP addressの部分を’localhost’と置き換えれる$ docker pull ubuntu:20.04 $ docker tag ubuntu:20.04 localhost:5000/my/ubuntu:20.04
他のPCから利用する場合は, IP addressの部分を’192.168.123.123’などの数字にする
registry起動PCのIPaddress:192.168.10.10 の場合:$ docker pull ubuntu:20.04 $ docker tag ubuntu:20.04 192.168.10.10:5000/my/ubuntu:20.04
6. 登録したImageをWebで確認#
registry起動PC: http://localhost:8080 にアクセス
他のPC: http://[registry起動PCのIPaddress]:8080 にアクセス