Docker Private Registy#

注釈

codeの$ xxxはhost OS内,# xxxはdocker container内のターミナルを示す

0. OUTLINE#

  1. Install Slack Plugin

  2. Configuration

  3. Slack通知API test

  4. Uninstall Slack Plugin

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#

  1. 下記添付ファイルをDownload: docker-compose.yml

    $ curl http://kobe-kosen-robotics.org:
    
  2. (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設定に従う.

  1. FireWallのstatusを確認

    $ sudo ufw status
    
  2. 今回は2. Docker Composeより, port: 5000, 8080 を使用許可する

    $ sudo ufw allow 5000 8080
    
  3. もう一度 1. FireWallのstatusの確認を行い,許可した番号が追加されていることを確認する.

4. Creates, Starts and Attachs to Container#

  • コンテナの作成,起動&コンテナに入る:

    $ docker-compose up
    
  • コンテナに入る必要がない(起動するだけ)の場合, detach optionを追加:

    $ docker-compose up -d
    

5. Pushing an image#

  1. Create tag
    pushをする前に,どこのregistryで何という名前かを示す必要があるため,tag付けをする

    $ docker tag [pushするimage] [registry起動PCのIPaddress]:[公開port]/[作成者等]/[image名]:[tag(version)]
    
  2. Push image
    tag付けしたimageを選択して, pushする

    $ docker push [registry起動PCのIPaddress]:[公開port]/[作成者等]/[image名]:[tag(version)]
    
  3. 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 にアクセス

7. 参考#

  1. 第45回 「プライベートレジストリ」を知る――HPEが使っているDockerイメージ管理

  2. 第46回 Dockerのプライベートレジストリを活用する(準備編)

  3. 第47回 Dockerのプライベートレジストリを活用する(運用編)

  4. ブラウザでレジストリを確認

  5. Cent OSでFireWall設定など(ConoHa VPS)

  6. delete image on docker-registry