dockerをEC2上のCentOSに構築
rebuild.fmとかでも出てくるdockerを年末から触り始めた。
まだ理解はしていないけどコンテナ技術を使ってVagrantに比べて起動が高速とかいうのはあるっぽい。
Docker: Linuxコンテナを使ってアプリケーションの配置を支援するとかよくわかる。
インストールと環境設定
epelでインストール出来るのでyum -y install docker-io
これでdockerのインストールは完了。
docker -v
Docker version 0.7.2, build 28b162e/0.7.2
ちゃんと入っていることは確認できる。
「dial unix /var/run/docker.sock: permission denied」なんていうエラーが出るとは思うけどrootでやればOK
ちゃんと一般ユーザ権限で利用出来るようにするなら
usermod -G docker ユーザ名
service docker restart
しておこう。
今回はrootで直接Loginして使うのでusermodは打たなくてもOK
dockerの起動
docker run -i -t ubuntu /bin/bash
これでubuntuのimageを持ってきてくれます。
最初の数分間は待ちましょう。
起動してきたら自動的にシェルに入っていると思います。# cat /etc/issue
Ubuntu 12.04 LTS \n \l
# exit
CentOSの上にubuntuが動いているという不思議な感じ・・・
とりあえずexitで抜けておく
dockerはここからよくわからない世界に入っていくと思う。
コンテナとかをちゃんと理解しないとつらそう
その辺は上記スライドを見ましょう。
このスライドすごくわかりやすい。
ベースイメージを用意
docker pull learn/tutorial
dockerのRepositoryからImageをダウンロード
数分かかりません。
imageを起動
docker run -i -t learn/tutorial /bin/bash
この起動がめちゃくちゃ速い。
ちょっぱやです。
アプリケーションのインストール
仮想サーバ(コンテナ)にLoginしている前提でapt-get install -y vim
exti
ここでびびるのは再度
docker run -i -t learn/tutorial /bin/bash
で起動してもvimが入ってない・・・
この概念がわからずに・・・状態な私でした。
ベースイメージが更新されないという事に気がつかなかった。
コンテナをコミットしてimageに
docker ps -a
で動いているdockerがわかります。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
736e9de497e7 learn/tutorial:latest /bin/bash 7 seconds ago Exit 130 grave_poincare
960fba45e682 learn/tutorial:latest /bin/bash About a minute ago Exit 0 jolly_tesla
e7935ccfcff5 ubuntu:12.04 /bin/bash 2 minutes ago Exit 0 cranky_thompson
Imageが同じlearn/tutorialでもコンテナIDが違います。
この場合は960fba45e682が先ほどvimをインストールしたコンテナ
736e9de497e7が一度抜けて再度立ち上げたコンテナ
これが理解するのに時間がかかりました。
vimが入っているコンテナをCommit
docker commit 960fba45e682 learn/vim
作ったコンテナを起動
docker run -i -t learn/vim /bin/bash
このコマンドで先ほどcommitしたコンテナを起動することができます。
このときにプロンプトは先ほどcommitしたコンテナIDとは違っています。
その上に修正した場合にはまたcommitしてコンテナイメージを持つ感じになります。
次のステップはdocker pushとかでLocalのRepositoryにpushできたらいいなー。
開発環境をpushしたら本番環境からpullしたらデプロイが終了とかいう妄想をしています。
あっDockerfileについても調べないと、Dockerfileとchefの区別がいまいちついていない^^;;
まとめ
dockerに慣れると
起動時間の短さにec2の起動ですらかったるく思える。
ポータブルなWebアプリケーションを読むとなるほどって思う。
この手のものがどこまで流行るかはわからないけど押さえておく必要ありそうだ。
最速Docker研究会(DockerのTipsを20個上げていくぜ編)
MacにもDockerを入れて遊べるような環境を構築してみようかなぁ〜