ansibleに続いてdockerについて書いていこうと思います。
dockerとは?
物凄く簡単に言ってしまうとサーバーの状態自体を保存して使いまわしすることができます。
環境構築って物凄く面倒くさいので、例えばapacheとMySQLを入れたサーバーの状態を保存しておいてそれを使いまわすみたいな感じですね。
vagrantとちょっと近いですが、もっと軽量で
↓がものすごくわかりやすいのでここを見ておけば問題ないかな・・
http://qiita.com/pottava/items/7086f9d63487aa3d7d08
(その1から始まりその6まで進みます。)
Linux上でしか動かないのでvirtualbox + vagrantを使うか,VPSなどをテスト的に使用しましょう。ただ32bitだとうまく入らないようです。
32か64かはunameというコマンドで調べられます。
http://blog.flatlabs.net/20110509_221214/
インストール
まずはインストールと起動です。
1 2 3 4 |
#インストール yum -y install docker-io #起動 service docker start |
イメージ取得&コンテナ作成
このあとイメージを取得します。例えばcentOSを取得してみましょう。
1 2 3 4 |
#イメージ取得 docker pull centos #イメージ一覧確認 docker images |
ここでDockerを起動します。
起動されたDockerの状態を「コンテナ」といいます。
1 2 3 4 5 |
#コンテナ起動 docker run -i -t --name コンテナ名 centos(:タグ名) /bin/bash #コンテナの中にログインしているため #OSの状態がかわったのがわかると思います。 cat /etc/redhat-release |
なにか適当なことをして(例えばテキストファイルを作るなど)exitとするとコンテナからログアウトし、同時に停止することになります。(停止せずにログアウトだけするのはCtrl+P,Q)
この状態で
1 |
docker ps -a |
と打つとコンテナの一覧が見えます。
また
1 |
docker diff コンテナ名(docker ps -aのNAMESにあたる部分) |
と打つと行った作業の履歴が見れます。
一度作成したコンテナにログインする場合、停止していれば、
1 |
docker start コンテナ名 |
で起動させる必要があります。この状態でdocker ps -aをうつとstatusがUP(起動中)になっているのがわかると思います。
1 |
docker attach コンテナ名 |
と打つと先ほどのコンテナの中に再ログインができます。
commit
この状態で
1 |
docker commit コンテナ名 任意の名前 |
とうつとimagesに追加されます。※後程説明しますが、任意の名前はリポジトリ名:タグ名のほうがいいかもしれません。(例 centos:lastestなど)
この状態でdocker runからimageを起こしてあげると先ほどの変更されたコンテナを起動させることができます。
コンテナ自体はgitのようにコミットができるようです。
ちなみにコンテナの削除はdocker rm コンテナ名になります。
参考リンク
インストール
http://qiita.com/tigberd/items/b94ae2bf7d78685cd6f5
起動ログイン
http://qiita.com/kooohei/items/0e788a2ce8c30f9dba53
削除
http://qiita.com/tifa2chan/items/e9aa408244687a63a0ae