docker
docker-registry

Docker Private Registry

More than 1 year has passed since last update.

※ この記事は古いです。registry 2.0 で改めて試した記事を書き直しました。

Docker private registry って何?

Docker Hub みたいのを自前のサーバーに立てる事ができます。

以下、CentOSでの例で説明します

どうやって?

詳しくは Docker Private Registry に書いてある。

Docker Private Registry 自体もDocker Image化されているので、以下のCommand実行でできちゃう。

$ sudo docker run -d -p 5000:5000 registry

CA証明書ないって言われる

Docker Private Registry 立てたはいいけど、証明書がなくてクライアント側のCommand実行で SSL (HTTPS) 通信に失敗する。

$ sudo docker search localhost:5000/search_word

2014/11/21 00:22:14 Error response from daemon: Invalid registry endpoint https://172.31.17.31:12345/v1/: Get https://172.31.17.31:12345/v1/_ping: EOF. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry 172.31.17.31:12345` to the daemon's arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/172.31.17.31:12345/ca.crt

$ docker pull hoge とかのコマンドはdefaultでHTTPSを使う

次の手順で、クライアント側のDocker daemonに Docker Private Registry をHTTPS通信しないように設定する。

HTTPS通信しない方法

まず、"/etc/sysconfig/docker" を開く

$ emacs /etc/sysconfig/docker

"other_args="--insecure-registry XXX.XXX.XXX.XXX:YYYYY" "を追加

# /etc/sysconfig/docker  
# ↓これ追加する。指定したRegistryにSSL通信しなくなる設定  
other_args="--insecure-registry XXX.XXX.XXX.XXX:YYYYY"

Docker daemonを再起動

$ sudo service docker restart

使い方

基本は Working with Docker Hub と同じ。URIの明示的指定があるだけ。

検索 (search):

$ sudo docker search your.server.address:port/search_word

取得 (pull):

$ sudo docker pull your.server.address:port/namespace/yourimage:tag

保存 (push):

$ sudo docker tag namespace/yourimage:tag your.server.address:port/namespace/yourimage:tag
$ sudo docker push your.server.address:port/namespace/yourimage:tag