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冊位は手元にあってもいいかもですね~


投稿日

カテゴリー:

,

投稿者: