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