Docker

目次



最近の更新
  • 2014/04/18 14:0
  • Ubuntu 14.04 LTS
  • 「Red Hat Enterprise Linux Atomic Host」
  • 公開イメージ
  • RHEL7、Node.js テスト、CoreOS の翻訳記事の紹介
  • Vagrant
  • 制限、golang図解記事の紹介

  • ひとこと
    • まとまったシステムを管理するのには、他のツールに Docker を組合わすのがよさげです
    • Vagrant などはよく目にする所です。暫定的にこのページで紹介します
    • dokku、Chef、Jenkins などもおいおい。概要はこちらにあったりなかったり>ツールあれこれ
    • また、本サイトでは、Dockerfile についてまだまとめていませんが、これもおいおい

Docker


1周年だそうです

  • Happy Birthday Docker! | Docker Blog
    • March 20, 2014
    • It’s been a year now since Docker was launched. Solomon Hykes, first demoed it during PyCon 2013, it then leaked on Hacker News, and several days later Docker was officially launched and open sourced.

Docker 概要

◆概要


Docker_logo.jpg

  • コンテナの基本
    • Linux コンテナとは「プロセスとネットワークスペースを作り出す仮想環境」
    • ホストの他の環境から隔離され、ディレクトリの構成もホストから独立して最小限で構築されます
    • 複数のアプリケーションを実装することも可能です
    • コンテナとホスト、あるいは複数のコンテナを連携させ、複雑なシステムを構成できます
    • 処理系・実行環境を最小限の構成で実装することで、開発に役立てようというものです

  • Docker の特徴
    • Docker libcontainer または LXC を使用して、Linux コンテナのインスタンスを生成します
    • (0.9 から、LXC はオプション)
    • 生成だけでなく、終了後に再現・続行・分岐が簡易に出来る仕組み
    • Docker におけるコンテナは、aufs や独自ドライバによって、ファイルシステムこみの仮想環境
    • 使い方としては、複数のアプリケーションやライブラリの導入を伴う等、そこそこ大きなシステムの構築で、開発やデプロイに応用するなどの用途が想定されます。小さなプログラムのテストでログを残したりするのにも便利そうです

  • 概念・仕様
    • Docker daemon の起動以降、全ての処理は、docker のサブコマンドで指定実行します
    • コンテナの情報・状態は「イメージ」と呼ばれ、実行による派生部分は差分で管理されます
    • イメージは、サイトからローカルにキャッシュしたり、Dockerfile を定義して build で作成します。
    • run でサイトのイメージを指定すると、最初は自動的に pull します。rmi はイメージを削除します
    • 実行したコンテナは全て固有のIDで保存され、rm で明示的に消去するまで残ります。個別のID・タグ・名前で管理します。
    • 復元や派生が可能で、更にcommit で新イメージを作成できます。イメージの依存関係はツリー表示で見れます。
    • 公式サイトでアカウントを作ると、サイト側に push してイメージを公開することが出来ます


◆補足的に解説

.
 LXC は便利そうですが、設定操作がそこそこ面倒らしく、それが Docker でかなり楽になるようです。(LXC については、このページの下の方で紹介してます)

 これはあくまでもプロセスの実行環境ですので、KVM などの仮想マシンのように、ゲストOSとして別のカーネルを導入するなどの概念・仕様ではありません。(コンテナの中でなんらかの VM 環境を構築することは当然できるようです)

 ポートの仮想化などは LXC などの下層レイヤーが処理します。それらの値は Docker のデフォではランダムですが、値を指定することも出来ます。コンテナは、IPアドレス、PID 等々、独自の namespace=名前空間を持ちますが、これは、cgroup というLinuxカーネルの実装です。

 当初はファイルシステムの都合で Ubuntu 向けで、CentOS などでは工夫が必要だったようです。
 (2013/11下旬) 0.7になって各種カーネルに対応が広がりました。aufs というファイルシステムに依存した部分があったわけですが、これがいつ広まるか分からないということで、各種カーネル向けにドライバを追加したそうです。union機能( stackable filesystem ) などがキモで、これにより、ディレクトリの構成やファイルの更新も、コンテナ上で独自に構成されます。

 更に、RHEL~CentOS など、ディストリビューション側も対応し始めました。
 更に、Google Compute Engine でもサポートすることになり、大いに注目されました。
 更に、0.8 で MacOSX 対応で(ry

 wiki 的なものは、日本語ではまだ見あたりません。有志の皆さんのブログは続報満載です。
 下記はお薦めの紹介記事。長文です(CoreOS は、気になる所なので後述)

Docker: Linuxコンテナを使ってアプリケーションの配置を支援する
また、Dockerはすでに仮想化された環境でも動作します。つまり、EC2インスタンス、Rackspace VM、 VirtualBoxの中で動かすこともできるのです。実際、MacやWindowsでDockerを使うにはVagrantを使うのが有効です。

論理的帰結としてDockerを採用したプロジェクトがCoreOSです。CoreOSは軽量なLinuxディストリビューションで、Dockerを使ってすべてのアプリケーションをインストールし実行します。systemdで管理されます。

  • 英語での Wikipedia
Docker (software) - Wikipedia, the free encyclopedia
Docker is an open source project that automates the deployment of applications inside software containers.

According to an industry analyst firm 451 Research, "Docker is a tool that can package an application and its dependencies in a virtual container that can run on any Linux server. This helps enable flexibility and portability on where the application can run, whether on premise , public cloud, private cloud, bare metal, etc."


◇ 参考・解説


◆Docker 公式サイト

.

◇ 導入


◇公式チュートリアル
  • Getting Started - Docker: the Linux container engine
    • Interactive commandline tutorial
    • The best way to learn how Docker works is to use it!
    • This hands-on tutorial is 100% online, so you don't need to install a thing. In about 10-15 minutes you'll be familiar with the basic Docker commands.
    • ※オンラインなエミュレータで基本操作が学べます。
    • Start! で、全画面。画面左が解説で最下段の枠をクリックするとコマンドが表示されます。コピペなどで画面右のコンソールで実行すると、進行します



◇ 動画

リリース記事

  • ひとこと
    • 0.8 辺りから、一段と普及してきたようで、導入例も色々と紹介が増えてきました
    • コンテナ側で sshd を立ててログインするような手法が定番になっているようです
    • 一方で、問題になる点もあるようで、CentOS 6.5 で詰む事例もあるようです
    • 3/10 に 0.9 がリリース (JST 2014/03/11未明) その後、0.9.1
    • 4/8 に 0.10 がリリース ( PDT )


◆0.10 の記事

.
公式
  • Docker 0.10: quality and ops tooling | Docker Blog
    • April 8, 2014 (JST 4/9 朝)
    • Quality いろいろ
      • In that week alone we closed 48 tickets and merged 68 pull requests. Here is a small sample
    • Ops tooling いろいろ
      • Stop behavior: コマンド docker stop の動作改修で安全性向上
      • Signal handling: SIGTERMSIGKILL などの扱いで、Docker デーモンとコンテナでの処理
      • TLS auth: remote API 向けにTLS/SSL認証をビルトインでサポート
      • Systemd slices: systemdプラグインをサポート
      • Release hashes: Every release of Docker now includes SHA256 and MD5 hashes of all build artifacts
    • Docker 1.0 に向けて、テストを手伝ってよ!


関連記事


◆0.9 の記事

.
公式
  • Docker 0.9: introducing execution drivers and libcontainer -Docker Blog
    • Docker 0.9 では2つの主要な改善。execution drivers and libcontainer
    • Execution drivers では、環境に応じて色々カスタマイズ出来る
    • libcontainerでは、LXC やその他の userland package に依存せず、直接カーネルのコンテナAPIにアクセス可能に。LXC は now optional 扱い
    • 皆さんの Go projects にも libcontainer を組み込んでみてよ!(入れ方あり)
    • 次は、production-ready な 1.0 release を目指す
      • production quality
      • first class support of all major operating systems
      • a shrunken core and a stable plug in architecture
      • well documented
      • able to be commercially supported by Docker and our partners
      • Docker able to offer long term support



Docker Blog から
docker-execdriver-diagram.png

関連記事


Docker Meetup in Tokyo

◆Docker Meetup in Tokyo #2

.

  • ひとこと
    • 2014/04/11 (金) 19:0~ の発表会。会場>グーグル東京オフィス
    • ハッシュタグ: #dockerjp ( 中継のURLなど適宜 )






◆Docker Meetup in Tokyo #1

.

  • ひとこと
    • 2014/02/12 (水) の発表会。会場> NII( 国立情報学研究所 )
    • NII は、Docker の運用規模的にも世界有数な感じですし、日本での研究をリードしてるようですね
    • 色々な問題点・課題が伺い知れます
    • なお、#2 は 2014 04/11(金)19:00 予定だそうです >Docker Meetup Tokyo - connpass




最近の記事

◆Ubuntu 14.04 LTS

.
  • Ubuntu 14.04 LTS Debuts With OpenStack Icehouse and Docker Support | Linux.com
    • 17 April 2014
    • OpenStack Icehouse and Docker Support 付きの Ubuntu 14.04 LTS がデビュー
    • After months of widespread anticipation, Canonical on Thursday released Ubuntu 14.04 LTS, a new Long-Term Support version of its popular Linux distribution that promises the extended support often sought by business users, in particular.
    • Not only is Ubuntu 14.04 LTS packed with Docker and OpenStack Icehouse, but it also introduces support for IBM Power Systems and POWER as well as for 64-bit ARM servers.

  • 上記の補足
    • Canonical Ltd. Ubuntuのサポートやトレーニングプログラムを有償で実施して収益化しつつ、開発者やコミュニティーリーダーをUbuntuプロジェクトに送り込むことで開発を促進しているそうです
      カノニカル - Wikipedia
    • OpenStack(オープンソースクラウド)の次期リリースの名前が Icehouse で、2014年4月の公開予定だそうです。
      OpenStackの4月リリース ‘Icehouse’ 詳細

◆RHEL

.
  • Red Hat Summit 2014:レッドハット、クラウド時代の新たな抽象化レイヤとしてDockerコンテナを推進 - @IT
    • 2014/04/17
    • 米レッドハットは、4月15日より開催しているRed Hat Summit 2014で、Linux OSのパワーを改めて強調した。具体的には、物理サーバからクラウドまでの多様なインフラ環境をカバーする、アプリケーションのための統合プラットフォームとして、コンテナ型仮想化技術を推進していく取り組みを説明した。
    • 米レッドハットは、Project Atomicに基づく製品、「Red Hat Enterprise Linux Atomic Host」を提供する。Red Hat Enterprise Linuxと並ぶ、別個の製品という位置付けだ。Atomic Hostは、Red Hat Enterprise Linuxにおけるハードウェア認定を継承する。
    • レッドハットは2014年3月、Dockerコンテナ形式でパッケージングされたアプリケーションの認定プログラムを開始すると発表した。
    • レッドハットは、OpenShiftのアプリケーションコンテナをDockerと統合、Dockerコンテナ形式でパッケージングされた認定アプリケーションをサポートする。
    • 米レッドハットのPaaS製品/サービスのベースとなっている「OpenShift Origin」内に、新規プロジェクトとしてGearDを創設。

  • Dockerのための軽量OS「Red Hat Enterprise Linux Atomic Host」、Red Hatが発表 - Publickey
    • 2014/4/18
    • Red Hatは、Dockerコンテナの運用に最適化した軽量なOS「Red Hat Enterprise Linux Atomic Host」を、今年リリース予定の「Red Hat Enterprise Linux 7」と合わせてリリースすると発表しました。
    • Red Hat Enterprise Linux Atomic Hostの開発は、「Project Atomic」と呼ばれるオープンソースプロジェクトがベースになります。Project Atomicは、CentOS、Fedora、Red Hat Linux横断のプロジェクト。
    • Red HatはDockerの開発元であるDocker.ioとの協業を深め、両社でコンテナの相互運用性などについて作業していくことも合わせて発表しています。


  • Red Hat | Docker and Red Hat Expand Collaboration Around Container Technologies
    • 2014/4/15
    • Red Hat to bring Docker container technologies to Red Hat Enterprise Linux high-touch beta program and OpenShift Platform-as-a-Service offering
    • Customer benefits include:
      • Red Hat Enterprise Linux 7 is currently in beta and is targeted to be a Red Hat certified container host, with Docker as a primary supported container format.
      • Dockerized applications/ Docker Containers を含むように、ecosystem を拡張する
      • OpenShiftのアプリケーションコンテナは、Docker と統合される

  • Red HatがEnterprise LinuxとPaaSプラットホームOpenShiftでDockerをサポートへ | TechCrunch Japan
    • 2014/4/16
    • Red HatとDocker.ioの今日(米国時間4/15)の発表によると、両社の協働により、DockerのコンテナテクノロジがRed Hat Enterprise Linuxの招待制ベータと、Red HatのPaaSプラットホームサービスOpenShiftに導入されることになった。
    • Red Hat Enterprise Linux 7は現在ベータで、コンテナとしてはDockerをメインにサポートしている。Dockerの側では、企業がRed Hat Enterprise LinuxとOpenShiftをベースとしてパイロット事業を作っていくためのサービス、JumpStartを発表した。このサービスは企業にDockerに関する教育訓練と、Docker Registryのインストール、そしてDockerの商用サポートを提供する。
    • 英文元記事 Red Hat To Bring Docker Support To Enterprise Linux And OpenShift | TechCrunch


関連記事

まとめ系記事

◆海外

.

  • Useful Docker Bash functions and aliases - Kartar.Net
    • 2014/03
    • Getting the IP address
    • Removing containers
    • Removing images
    • Running a different types of containers
    • Docker build function
    • ※ よく使うコマンドの alias 例。 公式twitterが紹介していました

  • 15 Quick Docker Tips | CenturyLink Labs
    • March 21, 2014
    • Getting the id of the last-run container
    • Why you always want a Dockerfile, even if you install everything in the shell
    • Su-su-sudo
    • Take out the garbage
    • jq - the gangsta way to parse docker inspect's output




DockerEcosystem.png


◆国内

.

  • Docker 使ってたらサーバがゴミ捨て場みたいになってた話 #immutableinfra - ゆううきブログ
    • 2014-03-26
    • Jenkins のジョブスクリプトで、git push する度に docker run していたら ゴミがどんどんたまっていったという感じ。 1 push あたり、アプリコンテナ、DBコンテナとか合わせて3コンテナぐらい起動してるから開発が活発だと、どんどんゴミがたまる。
    • Device mapper がらみのゴミは、aufs 使うとかなり解決できそうな感じはしてる
    • 最近は rpm/deb パッケージのビルドを Docker on Jenkins でやらせるようにして開発効率をあげたりしてる。

  • 私の Docker TIPS - Qiita
    • 2014/03/20に投稿 (随時更新)
    • Docker TIPS あれこれ
    • Dockerfile
    • ソフトウェアのインストール、個別設定
    • 心霊・怪奇現象


  • TenForwardの日記
    • docker 0.9 がリリースされて,なんかすごいことになっていますね
    • libcontainer というものが導入されてます.ここでどうコンテナというか,Namespace を作成しているのかというのが知りたかったので,ちょっと調べてみました




◆API 関係

.





◆ソース・実装について

.
  • そろそろ理解しておきたいのでDockerのソースコードをビジュアルに読む! - Qiita
    • 2014/04/14
    • 結構ソースコードの量も大きくなっているので(2014/4月現在 テストコード除いて70000行弱)、さっと大まかに理解するためのツールを書いてみました。
    • このツールはgoのastからパッケージの間の依存関係を読んで、graphvizの解釈するdot言語に吐き出すツールです。
    • govizにはdot言語の出力の他にinstabilityの出力ができます。instability(不安定性)とは、詳しい説明はwikipediaに任せるとして、この数値が高い方がアプリケーション本体に近く、低い方が共通ライブラリとしての性質が強いものだとわかります。


  • Docker を読む - Kato Kazuyoshi
    • 2013/6/22
    • Docker は Go で書かれている。ソースコードは全体でだいたい15,000行で、そのうちおよそ 2/3 が本体、1/3 がテストとなっている。
    • Git を知っているひとだと、ここで img.Checksum() の結果を待たないことを不思議に思うかもしれない。実は Docker のコミット ID は単なる乱数で、Git のように内容に基づいて計算されるわけではない。なので、この SHA256 メッセージダイジェストが決まる前に、コミット ID を決めて、それを Docker CLI に返すことができる。
    • Docker はゲスト側の /sbin/init, ホスト側で lxc-start などを実行するデーモン、そのデーモンに指示を出す CLI の3つで構成されていて、すべての実装が docker コマンドにまとまっている。
    • デーモンと CLI は (TCP ソケットでも Unix ドメインソケットでも) REST 風な HTTP で通信しているので、自分でクライアントを書くのも楽そう。すでに クライアントライブラリ はいろいろ開発されている。
    • Aufs を使ったファイルシステムのレイヤリングを、Git のコミットグラフ風に管理しようとしているのが一番のキラーアイデアだと思う。
    • ※ golang ( Go 言語 )のソースを解読解説したすごい記事

事例

◆事例

.


  • OSC 2014 Tokyo/Spring さくらの社長が語る!-slideshare
    • OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~
    • by Kunihiro Tanaka, 代表取締役社長 at さくらインターネット株式会社 on Mar 06, 2014
    • 宣伝4割、Docker 1割、求人5割





各種環境


  • ※当初対象が Ubuntu でしたので、それは公式で見るとして、主にその他についてメモっています



◆制限

.
  • Serversman@VPSではdockerが使えない - Qiita
    • 2014/04/13
    • どうやらServersman@VPSでは種々の問題によりdocker導入できないようなのでメモ
    • dockerの導入にはver3.8以上のカーネルが必要である
    • Xen や KVM などの完全仮想化と異なり、 OpenVZ はホストOS のカーネルがゲスト OS のカーネル
    • カーネルのバージョン
      • uname -r

公式から一部

  • Installation on Red Hat Enterprise Linux - Docker Documentation
    • Also note that due to the current Docker limitations, Docker is able to run only on the 64 bit architecture.
    • You will need RHEL 6.5 or higher, with a RHEL 6 kernel version 2.6.32-431 or higher as this has specific kernel fixes to allow Docker to work.


◆公開イメージ

.
  • ひとこと
    • Dockerfile では、先ず FROM で ベースとなるイメージを指定します
    • 環境に応じて、公式イメージなどが用意されています。下記は参考に CentOS 6

  • Home | Docker Index
    • The Docker index is the place to find and browse Docker container images.
    • Popular images、Official images

  • centos Repository | Docker Index
    • Last updated ※適宜。2014-04-17 など
    • Official CentOS 6 Image as of 12 April 2014
    • This is the official CentOS image, and will be updated on a regular schedule or as needed for emergency fixes.
    • centos:latest will always point to the most recent version currently available centos:6 will point to the latest version of the CentOS 6 tree.


◆CentOS/RHEL

.
◇ 導入手順

※ 関連ページ Docker・導入例


  • 準備
    • sudo yum -y upgrade
    • EPEL を入れておく

docker-io package を入れる
sudo yum -y install docker-io

update する場合
sudo yum -y update docker-io

Docker daemon の起動
sudo service docker start

If we want Docker to start at boot we should also
sudo chkconfig docker on

Now let’s verify that Docker is working.
sudo docker run -i -t ubuntu /bin/bash
Done!, now continue with the Hello World example.


◇ 0.8 の記事など



◆CoreOS



  • プロキシ環境下でのCoreOS + Docker - Qiita [キータ]
    • 2013/12/05
    • dockerは内部的にはGoのnet/httpを使って、イメージファイルを取りに行きます
    • プロキシを通すためには、HTTP_PROXY環境変数にプロキシURLを設定
    • 試行錯誤した結果、OEMベンダ向けのディレクトリにスクリプトを書けば、docker起動前に実行




  • CoreOSでDocker入門
    • 2013-08-15
    • CoreOSのVagrantイメージでDocker入門してみた
    • Dockerもデフォルトで起動済み




◆MacOSX

.
  • はじめてのDocker on Mac OS X | Developers.IO
    • 2014/04/09
    • Docker の実行方法はVagrantを使う方法などいくつかありますが、今回はDocker 公式ドキュメントをベースに、Homebrewで簡単にインストールする方法をチョイスしてみました。

  • Docker、Mac OS XとBTRFSをサポート
    • 2014/3/5
    • Docker 0.8のリリースの一部として、Docker.ioチームはMac OS XへのインストールサポートとAUFSの代替としてBTRFSが使えるようになったことを発表した。
    • Macサポートは、ネイティブのDocker OS XクライアントとVirtualBoxで動かすのに必要な軽量な
      Boot2Docker仮想マシン (VM) から構成される
    • (OS XはDockerに必要なLinuxコンテナをサポートしていないため)
    • このリリース以前は、MacユーザはLinux仮想マシン上でDockerクライアントとデーモンの両方を動かす必要があった
    • BTRFSドライバはまだ実験的なものとされ、既存のBTRFSパーティションを用意する必要がある

  • dockerがver0.8でmacに対応したので触ってみたメモ - Qiita
    • 2014/02/08 (02/20に編集)
    • これまでmacでdockerを利用するにはvirtualboxなどでLinuxの仮想環境を用意してその上で利用するという手段しかありませんでしたが、dockerのver0.8からはmacにインストールしたdockerコマンドで指定ホストで起動してるdockerサーバをハンドリングできるようになったので試してみます。



◆Apache Mesos

.
Apache Mesosは、クラスタマネージャと呼ばれる仕組みです。
LXC の抽象化や、Docker 連携があります


github から
mesos.png

  • サーバクラスタのためのオペレーティングシステムMesosを開発するMesosphereがアプリケーションコンテナDockerをサポート | TechCrunch Japan
    • 2013/9/27
    • Mesosは、サーバのクラスタを効率的に管理し、リソースの隔離も行うオープンソースのプロジェクトだ。今は主に、プロジェクトの生誕の地であるTwitterとAirbnbなどで使われている。Googleにも”Borg”と呼ばれるよく似たシステムがあり、それはMesosが登場するかなり前に単独で開発され、データセンターの稼働の最適化に利用されてきた。
    • 背後でChronosとMarathonが動くことを前提として、チームは今日(米国時間9/26)、Mesosが動かして管理するアプリケーションコンテナDockerを発表した。デベロッパは自分のアプリケーションをこの軽量でポータブルなコンテナに収めることによって、展開を…新しいマシン上の展開でも…自動化できる。

記事など



◆Vagrant

.
公式

Vagrant と Docker の記事


Vagrant の記事

  • Vagrantが開発環境向けコラボレーションツールをリリース
    • 2014年3月30
    • DevOpのツールを提供しているVagrantはバージョン1.5の重要な機能を発表した。公開イメージリポジトリと実行環境へのアクセスを共有する機能だ。Vagrant Cloudは完全な開発環境の発見と配信をシンプルにする。Vagrant Shareを使えば開発者は仮想環境へHTTPやSSHでアクセスする方法を他者に公開してコラボレーションできる。
    • 最近のブログ記事でVagrantチームはVagrant 1.5の機能を発表した。Vagrantは構成されたLinux仮想環境を作成し配布するのを単純化するツールだ。このツールのユーザは今までテンプレートとして利用するマシンを探しまわらなければならなかった。これらのテンプレートは“ボックス”にパッケージングされている。ボックスはVagrantの基礎であり、VirtualBox、AWS、VMware、Hyper-Vなどのプロバイダで利用できる。Vagrant Cloudが生まれたことで、開発者は公開、あるいは非公開のボックスにアクセスしバージョン管理するための中心地を持つことができる。ほかの人が使うためのボックスをリリースすることも可能だ。
    • Vagrantのユーザは公開リポジトリでさまざまなボックスを公開し他のユーザが見つけられるようにできる。単純にVagrant Cloudで“Ubuntu”という文字列で検索すると多くのボックスが見つかり、ユーザはホスティングプロバイダで検索結果をフィルタできる。

  • 今すぐVagrantを始めよう | 株式会社シンメトリック公式ブログ |
    • 2014/03/10
    • なにはなくともVagrantだぜ ? 最近私はそう思っている。Vagrant(ベイグラント)は派手なソフトウェアではないが、IT技術者の学習と仕事のスタイルを大きく変革する可能性を持っている。
    • ここでは、Git for Windowsをインストールすることにする。Git for Windows をインストールすれば、sshコマンドをはじめとするLinux風コマンド群とGitが使えるようになるので一石二鳥だ。
    • Vagrantfileや関連するスクリプトを上手に書けば、vagrant up するだけで望みの環境がその場で立ち上がるのだ。仮想環境はクラウド上に展開することもできる。例えば、アマゾンのAWS上にVagrantマシン群を配備できる。クラウド・ホスティング・サービスDigitalOcean(デジタルオーシャン)への配備の例は「1円クラウド・ホスティングDigitalOceanを、Vagrantから使ってみる」を参照。

  • 仮想環境構築ツール「Vagrant」で開発環境を仮想マシン上に自動作成する - さくらのナレッジ
    • 2014/1/8
    • Vagrant」は、テスト用の仮想マシン作成やその環境設定などを自動化するツールだ。
    • テスト/開発環境をそろえるには、以前このブログでも紹介したChefPuppetといった設定管理ツールを利用するのがおすすめだが、仮想化ソフトウェアを使ってテスト/開発環境を構築する場合、その前に仮想マシンの作成やOSのインストール、といった作業も必要になる。Vagrantは、この仮想マシンの作成などの作業も含めた設定管理の自動化を行えるツールだ。
    • プロビジョニングでは任意のコマンドを実行できるほか、ChefやPuppetといった設定管理ツールの設定ファイルを仮想マシンに転送して設定管理を実行する、といったことも可能だ。
    • VagrantRuby で実装されており、WindowsおよびMac OS X、Linux(Debian、Ubuntu、CentOS、Red Hat Enterprise Linux、Fedora)で動作する。ただし、Windowsについては一部機能制限やほかのOS環境と挙動が異なる点がある。
    • Vagrantはデフォルトでは仮想化ソフトウェアとしてVirtualBoxもしくはVMwareを使用する。今回はオープンソースソフトウェアであるVirtualBoxを利用する例を紹介しよう。
    • Vagrantは公式Webサイトのダウンロードページからダウンロードできる。Mac OS X、Windows、Linux向けのパッケージが用意されており、Linux向けについてはDeb形式(DebianおよびUbuntu)とRPM形式(RHELおよびFedora)のパッケージが用意されている。
    • 例えばCentOS(x86_64)上の環境の場合、RPM形式のパッケージをダウンロードし、次のようにrpmコマンドでインストールすれば良い。
      • # rpm -ivh vagrant_1.4.0_x86_64.rpm

関連用語

aufs・union機能


当初、DockerUbuntu aufs というファイルシステムに依存した部分がありました
これがいつ広まるか分からないということで、各種カーネル向けにドライバを追加したそうです。

union機能( stackable filesystem ) などがキモで、これにより、ディレクトリの構成やファイルの更新も、コンテナ上で独自に構成されます。


上記サイトから
docker-filesystems-multilayer.png


LXC


VM=仮想マシンと違って、ホストの OS=カーネルで動作します。
オーバーヘッドが少なくて、すぐに起動出来るそうです
個々のコンテナで各種サーバーなどを起動し、それらが連携するシステムを構築出来るようです。
下記 orangain flavor さんが詳しい

LXC - Wikipedia
LXC (Linux Containers) とは、一つのコントロールホスト上で、複数の隔離された Linuxシステム(コンテナ)を走らせる、OSレベル仮想化のソフトウェア。LXC は仮想機械ではなく、個別のプロセスとネットワークスペースを作り出す仮想環境である。

記事など
  • Linuxカーネルコンテナ向けユーザー空間ツール「LXC 1.0」リリース | SourceForge.JP Magazine
    • 2014/2/25
    • 2月21日、Linux向けの仮想化ソフトウェア「LXC(Linux Containers) 1.0」がリリースされた。プロジェクトのWebサイトよりダウンロードできる。
    • LXC 1.0では非特権コンテナが完全にサポートされたほか、APIも「安定版」となった。luaやPython 3、Go、Ruby向けの公式APIバインディングも提供される。バックエンドで利用するストレージのサポートも強化され、任意のディレクトリだけでなくbtrfsやzfs、lvmなども利用できる。
    • コンテナのクローンやスナップショットも利用可能になり、コマンドラインツールの改良、ドキュメントの整備なども行われている。


SDN


  • ひとこと
    • Docker でコンテナ間通信をどう実装するか、というのもひとつの大きな課題なようです
    • SDN の概念がポイントになりそうですので、まとめておきます(暫定的にこのページで)

  • Docker networking basics & coupling with Software Defined Networks -slideshare
    • Mar 19, 2014
    • This presentation reminds Docker networking, exposes Software Defined Network basic paradigms, and then proposes a mixed-up implementation taking benefits of a coupled use of these two technologies. Implementation model proposed could be a good starting point to create multi-tenant PaaS platforms.

  • Windows Insider用語解説:Software-Defined Network(SDN)とは何か? - @IT
    • 2013/04/08
    • 「Software-Defined Network(以下SDN)」とは、ネットワークの構成、機能、性能などをソフトウェアの操作だけで動的に設定、変更できるネットワーク、あるいはそのためのコンセプトを指す。
    • ネットワーク上に仮想サーバが多数存在するようになり、しかもそれが動的に生成、消滅し、ときにライブ・マイグレーションによってネットワーク内を移動するようになると、そのたびにネットワーク管理者がネットワーク機器をいちいち設定する必要があるのではとても実用的な運用にならない
    • SDNが注目され始めたもう1つの理由が、「OpenFlow」と呼ばれるネットワーク標準の登場だ。OpenFlowはスイッチの動作を定義するとともに、そのスイッチを制御するためのプロトコルも定義している。
    • SDNは、いわゆるネットワーク仮想化も実現する。サーバ仮想化が、物理サーバの上に複数の仮想サーバを作り出すのと同じように、物理的なネットワークの上に仮想化された異なる機能や構成を備えた複数のネットワークを作り出せる(ただし、ネットワーク仮想化が常にSDNによって実現されるわけではなく、それ以外の技術によっても実現される)。




  • 最終更新:2014-04-18 14:00:06

このWIKIを編集するにはパスワード入力が必要です

認証パスワード