前回の記事で、Docker Indexというパブリックレジストリについて書きましたが、プライベートなレジストリを作ることも出来ます。それによって社外に出したくない資産などを管理することが出来ます。
Docker Indexには、プライベートレジストリ用のリポジトリが提供されていて、それをpullしてコンテナとしてプライベートレジストリとして使うことが出来るようになっています。
それでは、早速試してみたいと思います。
localhostでも構いませんが、今回はレジストリ専用のサーバーを用意してみます。
最初の記事のようにレジストリサーバー上で、Dockerをインストールしておきます。
レジストリのインストールと起動
そして、Docker Indexのregistoryというリポジトリからpullしてきいます。
# docker pull registry
あとはこれを立ち上げるだけです。レジストリの内部ポートは5000番が使用されます。今回は外部ポートも5000番で指定します。
# docker run -d -p 5000:5000 registry
commit
そしていままでのコンテナサーバー側で、コンテナをコミットしますが、指定の仕方が異なります。
docker commit <コンテナID> <レジストリサーバーIP>:<レジストリポート>/<リポジトリ名>のようにします。
# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7b033c1821a7 centos:6.4 /bin/bash 38 minutes ago Exit 0 # docker commit 7b033c1821a7 176.34.16.242:5000/memorycraft a2a360e08ee87d8fd3c98f08701ce0e4d681164e50432ff032890108eded996c
すると以下のようにタグ付けされたイメージが保存されます。
# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE 176.34.16.242:5000/memorycraft latest a2a360e08ee8 12 seconds ago 360.4 MB
push
そしてこれをpushしてみます。pushもコミットと同様の指定の仕方になります。
# docker push 176.34.16.242:5000/memorycraft The push refers to a repository [176.34.16.242:5000/memorycraft] (len: 1) Sending image list Pushing repository 176.34.16.242:5000/memorycraft (1 tags) 539c0211cd76: Image successfully pushed a2a360e08ee8: Image successfully pushed Pushing tags for rev [a2a360e08ee8] on {http://176.34.16.242:5000/v1/repositories/memorycraft/tags/latest}
うまく自前のレジストリにむけてpushされたようです。
確認
次に、ローカルのイメージを削除してみます。
# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE 176.34.16.242:5000/memorycraft latest a2a360e08ee8 3 minutes ago 360.4 MB # docker rmi a2a360e08ee8 Untagged: a2a360e08ee87d8fd3c98f08701ce0e4d681164e50432ff032890108eded996c Deleted: a2a360e08ee87d8fd3c98f08701ce0e4d681164e50432ff032890108eded996c # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
改めて、自前のレジストリから起動してみます。
# docker run -t -i 176.34.16.242:5000/memorycraft /bin/bash Unable to find image '176.34.16.242:5000/memorycraft' (tag: latest) locally Pulling repository 176.34.16.242:5000/memorycraft 539c0211cd76: Download complete a2a360e08ee8: Download complete bash-4.1# bash-4.1#
おお!無事起動しました。
このように、自前のレジストリを用意すると、公開したくないコンテナイメージを社内やシステム内に限定して共有することができます。
以上です。