dockerのプライベートレジストリの構築
Dockerってなんじゃ?(プライベートレジストリ)ここを参考にやってみる。
プライベートレジストリが使えないと業務で使うには正直つらいよね。
これで
- docker on Mac OSでサーバ構築
- プライベートレジストリにpush
- 本番環境でプライベートレジストリからpull
という流れが可能になった。
これはdockerをEC2上のCentOSに構築とかぶるけど気にしないで^^;;
プライベートレジストリの起動
EC2上のサーバにdockerを入れてregistryを構築します。
docker pull registry
これでレジストリサーバをpullしてきます。
dockerでcloseしているのが素晴らしい。
docker run -d -p 5000:5000 registry
これで外部から5000番に来たのがdocker上のコンテナの5000番に転送されます。
Security Groups も5000番を開けておきます。
テストなので0.0.0.0/0からのアクセスは許可してあります。
コンテナ作成
Macで作業を行います。
単純にCentOSを起動してupdateしてそのイメージを使うことにします。
CentOSのContainerをpulldocker2boot start
docker pull centos
CentOSのContainerを起動
docker run -t -i centos /bin/bash
起動したContainerの中で/etc/issueを確認します。
# cat /etc/issue
CentOS release 6.4 (Final)
Kernel \r on an \m
# yum update
# cat /etc/issue
CentOS release 6.5 (Final)
Kernel \r on an \m
これでCentOS6.5のイメージができました。
Imageの作成
現在のContainerの状態をみてimageを作ります。
docker ps -a
ONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dfe094c0b8d7 centos:6.4 /bin/bash 7 minutes ago Exit 0 naughty_archimedes
2c4ce30c4241 centos:6.4 /bin/bash 55 minutes ago Exit 0 naughty_feynman
docker commit :/
今回の場合はec2上に構築してあるのでレジストリサーバはec2を指定します。
docker commit dfe094c0b8d7 docker.barasu.org:5000/asuma/centos65
Imageのpush
docker push docker.barasu.org:5000/asuma/centos65
The push refers to a repository [docker.barasu.org:5000/asuma/centos65] (len: 1)
Sending image list
Pushing repository docker.barasu.org:5000/asuma/centos65 (1 tags)
Image 539c0211cd76 already pushed, skipping
0bf579823a85: Image successfully pushed
Pushing tag for rev [0bf579823a85] on {http://docker.barasu.org:5000/v1/repositories/asuma/centos65/tags/latest}
これでプライベートレジストリにpushが完了しました。
別dockerからpull
docker pull docker.barasu.org:5000/asuma/centos65
Pulling repository docker.barasu.org:5000/asuma/centos65
0bf579823a85: Download complete
539c0211cd76: Download complete
pullしたimageで起動
docker run -i -t docker.barasu.org:5000/asuma/centos65 /bin/bash
まとめ
dockerでの本番環境へのデプロイができるようになった。
これはImmutable Infrastructureの第一歩。
LocalのMacの上で構築したサーバをEC2上へデプロイしたり、GoogleのCompute Engine上にデプロイしたりが可能となるのは素晴らしい。
このblogのAP側もdockerでデプロイしてみるのもありかもしれないな