Dockerのコアな部分【覚書】


Docker とは

Webサーバなどの仮想化というよりも、linux(debian/ubuntu)隔離環境のツールセット

Dockerの作られた目的

どこでも、構築できるポータブル性プロセスの分離を目的として、Dockerは誕生!

必要な機能

隔離のために必要な機能

前提として、隔離しつつも、必要なところだけアクセスできるようにする必要があります。
(仮想マシンのように他のマシンにアクセス出来ないが、ネットワークやディスクなどに特に使う側がプログラミング等せずにアクセスできるイメージ)

どういうところが具体的にポイントになるかというと

ディスク(ファイルシステム)の隔離:OSに関する部分はリードオンリーで共有できると節約になる。

CPU、メモリのリソース:共有と隔離

プロセス:隔離と通信連携

ネットワーク:隔離と外部接続

 

これらのポイントについて、Dockerは対処しました。

ファイルシステム、ネットワークについては namespaceの技術で、リソースの分離はcgroupの機能で実現します。 lxcという コンテナ技術でセット化されているようです。

Side Effects : 派生する影響

つまり、コンテナは Linux OSのプロセスとして動いており、Dockerはそれを使いやすく整理しています。

運用ルールとして、1コンテナ1サービスを推奨してます。

XenのようOSに組み込まれ、その上でゲストOSが動くのでもなく、ハイパーバイザーのように直接ゲストOSが動くのでもないので、オーバーヘッドが少ないです。

プロセスとして動いているため、ゲストOSの部分は節約できますし、起動時にはある程度コンテナとホストOS間での隔離やアクセスのための準備は必要ですが、動作として linux上で動くのとほぼ変わりません。

逆に ホストOS を替えることはできませんし、lxcのコンテナ技術から離れることもできません

 

Linux Namespaces

LXCで学ぶコンテナ入門 -軽量仮想化環境を実現する技術:連載|gihyo.jp … 技術評論社 - 

今さら聞けない Linux コンテナの基礎 (1) - YouTube - 

ポータブル性のための動作上の仕組み

Dockerでは ベースイメージの上に、ファイルや、追加コマンドの履歴をレイヤーのように持ち、最後にその上で実行できるように挟んでパックしたものを イメージとして持ちます。

http://image.slidesharecdn.com/introductiontodockermanagementandoperations2nd-151101144211-lva1-app6892/95/docker-docker2nd-edition-69-638.jpg?cb=1446391304

pack

実行時はコンテナで、イメージはリードオンリーということらしいです。このイメージを管理するHubは公式にもあります。実際 CentOS や WordPress用など様々なものがあるらしいです。

Docker 経由でコントロールしなければ、履歴が保存できません。

コマンド履歴による管理であるため、設定内容がやや相対的です。例えば updateというコマンドを使うと、その時の最新のものを当てるため、1年後とではモジュールが変わる可能性があります。

セキュリティ上でも、まだフレームワークとしては隙が多そうらしく、まだ議論があるようです。

Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】

 

Windowsで動かすとは?

読んでいて疑問がありました。

Windowsでも動かせるという記述です。

ホストOSの機能で動くため、いったい Linuxとして設定するのか、 Windowsとして動くのかはっきりしないページも多かったです。

 また、VMを用意して ゲストOSが不要な仕組みである Docker なので、Windowsでは動かさないような気がするし、 動作するホストOSと透過的に連携する点を考えると、 WindowsOSとして動いているようにも思おえ、このことが相反しはっきりしないため、疑問がありました。

どういう事かと思案し、理解しながら色々調べました。

結論から言うと Mac/Windows上では、 UbuntuOSなどをVirtualBoxに載せ LinuxOSの時と同じような環境を Docker Tool(VirtualBox)で提供するとのことです(つまり、Linux上で動くことに変わりはありません)。

ちなみに VirtualBox の拡張部分は OSSではありません。そのため使用には料金が発生するようです。

 

載せられる先

EC2、BlueMix,Azure,GCEなどに配布できるそうです。

http://image.slidesharecdn.com/introductiontodockermanagementandoperations2nd-151101144211-lva1-app6892/95/docker-docker2nd-edition-80-638.jpg?cb=1446391304

まだこれからですが、複数のコンテナを管理(配布やスケジューリング等)を行うツールを開発しているようです。 Docker Machine/Swarm/Compose。

まとめ

Linuxでリソースの上げ下げをすでにしているケースでは、もう導入してもよいかもしれませんが、それ以外の場合、LinuxOSと密結合しているため、 VMマシンに比べてその部分での学習コストが高いです。

またまだ複数の構成を配置する機能が Docker上に無かったり、セキュリティ上隙が多いようなので、もう少し刈れてくるまで待ったほうがいいかもしれません。

Delicious にシェア
Digg にシェア
reddit にシェア
LinkedIn にシェア
LINEで送る
email this
Pocket

148 views.



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です