※ この記事は古いです。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