Edited at

Docker Private Registry

More than 3 years have passed since last update.

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

Docker private registry って何?

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



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

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

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


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 Get EOF. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry` 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/

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

次の手順で、クライアント側のDocker daemonに Docker Private Registry を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