Dockerプライベートレジストリー構築(その2)

前回は、regitryサーバをv2.0で作成しましたが、その後、WEB-UIツールとの連携で躓いたので、今回はregistry v1.0(latest)版で、registry-frontend と連携してみようと思います。

概要

  1. 永続化のためのディレクトリを作成する
  2. docker registryをrunする
  3. docker registry-frontendをrunする
  4. ブラウザで確認する

詳細

  1. 永続化のためのディレクトリを作成する
    ホストで永続化の為、以下のディレクトリを作成しておく。

    sudo mkdir -p /data/docker-share/registry
    sudo mkdir -p /data/docker-share/registry-frontend
    
  2. docker registryをrunする
  3. デフォルトのコンフィグをそのまま使います。あと、永続化の為コンテナの/registryを先程作ったディレクトリにVOLUME設定します。

    docker run \
      -d \
      --privileged \
      --name registry \
      --expose 5000 \
      -v /data/docker-share/registry:/registry:rw \
      -e SETTINGS_FLAVOR=local \
      -e DOCKER_REGISTRY_CONFIG=/docker-registry/config/config_sample.yml \
      -e STORAGE_PATH=/registry \
      -e SEARCH_BACKEND=sqlalchemy \
      -p 5000:5000 \
      registry \
      docker-registry
    
  4. docker registry-frontendをrunする
    linkの指定が重要ですね!registryのnameで指定した文字列そっくりそのままでないとダメです。あと、永続化の為に、先程作成したディレクトリとコンテナの/var/lib/h2とをVOLUME設定しておく必要があります。ブラウザで接続するポート番号を、3080番に変更しております。

    docker run \
      -d \
      --privileged \
      --name registry-frontend \
      -p 3080:80 \
      --link registry:registry \
      -v /data/docker-share/registry-frontend:/var/lib/h2:rw \
      -e ENV_DOCKER_REGISTRY_HOST=registry \
      -e ENV_DOCKER_REGISTRY_PORT=5000 \
      konradkleine/docker-registry-frontend
    

    ※起動までちょっと時間がかかります。。。

  5. ブラウザで確認する
    http://SERVER:3080/ としてアクセスする。
    frontend

    frontend2

docker本もだいぶ出そろってきたので、1冊位は手元にあってもいいかもですね~

Dockerプライベートレジストリー構築

概要

docerkのimageをprivateに蓄えておくregistryという、dockerを利用してみます。
以降の作業は全部ホスト側で実施します。
registry-frontendを用いたWEB-UI利用なら、こちらを見てくださいねd(^ー゜*)

準備

ホストサーバのホスト名 : server
利用するdockerコンテナ: registry:2.0

registryに登録するrepositoryを永続化したいので、ホストにボリュームを用意する。

mkdir -p /data/docker-share/registry/certs

https通信用に証明書を作製しておく

# cd /data/docker-share/registry/certs/
# openssl req -newkey rsa:2048 -nodes -keyout server.key -x509 -days 365 -out server.crt
Generating a 2048 bit RSA private key
....+++
.......................................+++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Osaka
Locality Name (eg, city) [Default City]:Osaka
Organization Name (eg, company) [Default Company Ltd]:company
Organizational Unit Name (eg, section) []:section
Common Name (eg, your name or your server's hostname) []:server

※ココで、Common Nameですが、registryのコンテナを実行するホストへのアクセスに影響しますので、ここ重要かも。

出来た公開鍵をregistryにアクセスするホストに登録する

# mkdir -p /etc/docker/certs.d/registry:5000
# cp /data/docker-share/registry/certs/server.crt  /etc/docker/certs.d/registry:5000/ca.crt
# ln -s /etc/pki/tls/certs/ca-bundle.crt /etc/docker/certs.d/registry:5000/ca-bundle.crt

※この/etc/docker/certs.d/ ホルダを作製してca.crtを設置すると、既存のdocker registryへのhttpsアクセスに仕様するための公開鍵 ca-bundle.crtが使われなくなっちゃうみたいで、とりあえず symlink貼っとくのがいいみたい。

registryに接続する側でregistryへのアクセスについて自己証明書のチェックをすっ飛ばしてつなげるようにしておく

# echo 'OPTIONS="--insecure-registry 192.168.1.0/24"' >> /etc/default/docker
# /etc/init.d/docker restart

※centosの場合は、 /etc/sysconfig/docker になります。

registryサーバを起動する

registryサーバはv2.0を使います。

docker run \
  -d \
  --privileged \
  --name registry \
  --expose 5000 \
  -v /data/docker-share/registry:/registry:rw \
  -e SETTINGS_FLAVOR=local \
  -e DOCKER_REGISTRY_CONFIG=/docker-registry/config/config_sample.yml \
  -e STORAGE_PATH=/registry \
  -e SEARCH_BACKEND=sqlalchemy \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/registry/certs/server.crt \
  -e REGISTRY_HTTP_TLS_KEY=/registry/certs/server.key \
  -p 5000:5000 \
  registry:2.0

push/pull

ubuntuのイメージをpushしてみる

# docker images ubuntu
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu              latest              8251da35e7a7        5 weeks ago         188.4 MB
# docker tag 8251da35e7a7 server:5000/ubuntu:latest

※serverの所は、registryコンテナが起動しているホストを指定する

docker本もだいぶ出そろってきたので、1冊位は手元にあってもいいかもですね~