# Docker Private Registy ```{note} codeの`$ xxx`はhost OS内,`# xxx`はdocker container内のターミナルを示す ``` ## 0. OUTLINE 1. [Install Slack Plugin](#1-Slack-Plugin-%E5%8F%82%E7%85%A7) 1. [Configuration](#2-Configuration) 1. [Slack通知API test](#3-Slack通知API-test) 1. [Uninstall Slack Plugin](#4-Uninstall-Slack-Plugin) ## 1. Install Docker & Docker Compose   [ _公式ページ_ ](https://docs.docker.com)等を参考にして頑張る.   インストールされているか確認   docker: ```bash $ docker -v Docker version 20.10.3, build ... ```   docker-compose: ```bash $ docker-compose -v docker-compose version 1.28.2, build ... ``` ## 2. Docker Compose 1. 下記添付ファイルをDownload: [docker-compose.yml](./data/docker-compose.yml) ``` bash $ curl http://kobe-kosen-robotics.org: ``` 1. (option): docker-compose.ymlを編集 ```yaml $ 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設定に従う. 1. FireWallのstatusを確認 ```bash $ sudo ufw status ``` 1. 今回は[2. Docker Compose](#2-Docker-Compose)より, `port: 5000, 8080` を使用許可する ```bash $ sudo ufw allow 5000 8080 ``` 1. もう一度 1. FireWallのstatusの確認を行い,許可した番号が追加されていることを確認する. ## 4. Creates, Starts and Attachs to Container - コンテナの作成,起動&コンテナに入る: ```bash $ docker-compose up ``` - コンテナに入る必要がない(起動するだけ)の場合, detach optionを追加: ```bash $ docker-compose up -d ``` ## 5. Pushing an image 1. Create tag
pushをする前に,どこのregistryで何という名前かを示す必要があるため,tag付けをする ```bash $ docker tag [pushするimage] [registry起動PCのIPaddress]:[公開port]/[作成者等]/[image名]:[tag(version)] ``` 1. Push image
tag付けしたimageを選択して, pushする ```bash $ docker push [registry起動PCのIPaddress]:[公開port]/[作成者等]/[image名]:[tag(version)] ``` 1. Example
registry起動PCで実行した場合は, IP addressの部分を'localhost'と置き換えれる ```bash $ 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 の場合: ```bash $ docker pull ubuntu:20.04 $ docker tag ubuntu:20.04 192.168.10.10:5000/my/ubuntu:20.04 ``` ## 6. 登録したImageをWebで確認 - registry起動PC: にアクセス - 他のPC: http://[registry起動PCのIPaddress]:8080 にアクセス ## 7. 参考 1. [第45回 「プライベートレジストリ」を知る――HPEが使っているDockerイメージ管理](https://www.itmedia.co.jp/enterprise/articles/1707/28/news052.html) 1. [第46回 Dockerのプライベートレジストリを活用する(準備編)](https://www.itmedia.co.jp/enterprise/articles/1708/10/news052.html) 1. [第47回 Dockerのプライベートレジストリを活用する(運用編)](https://www.itmedia.co.jp/enterprise/articles/1708/25/news014.html) 1. [ブラウザでレジストリを確認](https://qiita.com/rsakao/items/617f54579278173d3c20#%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%A7%E3%83%AC%E3%82%B8%E3%82%B9%E3%83%88%E3%83%AA%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%9F%E3%81%84%E5%A0%B4%E5%90%88docker-registry-frontend) 1. [Cent OSでFireWall設定など(ConoHa VPS)](https://qiita.com/henkeizyu/items/801413fde4820c8873e4) 1. [delete image on docker-registry]()