先日書きましたが、改めてDockerのいいところや使い方を学んでいこうと思います。
GoogleでもCoreOSを取り入れることになったようで、ますますDockerが普及していくんじゃないかなということで。
先日クーポンを頂いたので、しばらくGCE(Google Compute Engine)ラブです。
Dockerとは
仮想環境よりも軽量な、コンテナと呼ばれるものを管理する基盤。
ホストOSにDockerを用意して、その上に複数のコンテナを載せていく。
各コンテナは独立しており、同じマシン上で動いていても影響しない。付け替えも容易にできる。
何が嬉しいの?
オンプレ時代は、サーバー機に対して更新をかけるときは既存のものの上から更新をかける形だった。
ちょっと修正するだけなので楽に見えるが、
- 一度処理を間違えると元に戻しにくい
- ローカルとサーバーで環境が微妙に異なる
- スケールしにくい
などの問題があった。
そこで、仮想環境に載せることで、あとからやり直せるような構成にする技術が進んだが、
- 実行速度が遅い
- 容量が大きくなる
- デプロイも一苦労
などのオーバーヘッドに起因する問題が発生していた。
さらにはパブリッククラウド(EC2など)が登場し、snapshotで同じものを用意できるようになったが、
- やはり開発環境と微妙に異なる。
- 細かく分けてサーバーを立てるとお金が大量にかかる
- ベンダー依存してしまう
といった問題があった。
Dockerは、これらの問題を解決するために、
- どこでも同じ環境として動く。
build once, Run anywhere
- 不安定な環境にならない。
Immutable Infrastracture
- オーバーヘッドが少ない。
- 共有が容易
Docker Index
といった利点を持っている。
機能は?
とりあえず現状調べたものとして、
- リソース管理
cgroups
- 差分管理ファイルシステム
UnionFS
- 環境設定ファイル
Dockerfile
- ルーティング
どう使うの?
リソース管理cgroups
仮想マシンでいうところのCPUやメモリの割り当てを行える。
差分管理ファイルシステムUnionFS
作業の一つ一つがレイヤとして積み重なっていく。過去の作業を戻すことはないため、その部分を共有することができ、効率よく動作させることができる。
Dockerfile
Dockerfileがあれば、どの環境でもおなじように設定ができる。
(Docker Indexからpullしてくるのと違いがあるの?)
ルーティング
調査中
動作確認 on GCE
1 2 3 |
|
試しにVersionを見てみるとこんなカンジ。
1 2 3 4 5 6 7 8 9 |
|
現在の最新版が入っています。
グローバル設定
グローバルな設定ファイルはこんなカンジ
- /etc/default/docker
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
インタラクティブ操作
1
|
|
- -t インタラクティブ実行
- -h root権限
っぽい。
log確認
1
|
|
- -f follow ずっと追い続ける。
現在のコンテナ確認
1
|
|
- -a 停止中も含めたすべてのコンテナ
一時停止
1
|
|
Localでdocker
ちなみに、Local環境(Ubuntu14.04)でもやってみたところ、
1 2 3 4 5 6 7 |
|
少し古いバージョンでした。
今後、Commitやpullを追加していきます。