Knowledge

オープンソースで情報共有のサービス「Knowledge」を作っています。ブログでは、サービスの説明や開発で得た情報などを書いていきます。https://information-knowledge.support-project.org

開発・テストといった環境整備が劇的に楽になります - 「Docker」のススメ

Dockerについて

  • 1年くらい前から、開発〜テストでDockerを使ってます
  • それまでは、VMでテスト開発〜テスト環境を作ることが多かったのですが、Dockerを使い初めてからはDockerの虜です
  • というわけで、今日はDockerを紹介したいと思います

What's Docker

  • Docker は VMware ESXiやLinux KVMなどの「ハイパーバイザー型の仮想化」に対して、「コンテナー型の仮想化」とよばれるものだそうです
    • なにやら難しい説明は置いといて、私が考えるDockerを使うメリットを書きたいと思います
    • 詳しい説明などは、以下のページなどが参考になると思います

いまさら聞けないDocker入門(1):アプリ開発者もインフラ管理者も知っておきたいDockerの基礎知識 - @IT

私の考えるDockerのイケテルところ3選

容量が小さい!
  • VMware で環境を作成すると、VM毎に2GB〜の容量を使う事が多いです
  • 複数のプロジェクトを担当すると、ローカルPCに40GBのVMのファイルが置いてあることも、、、
  • Dockerは、ファイルの差分で管理されるので、いくつも環境があっても容量は凄く少なくてすみます

  • Dockerのイメージ

    • CentOS7 (2GB)
      • CentOSを使った開発環境-1 (+100MB)
      • CentOSを使った開発環境-2 (+300MB)
        • 開発環境-2をさらに派生した環境 (+50MB)
  • 上のようなイメージで、ベースのCentOSの部分は、各開発環境で共通で利用されます(上の例なら、容量は2.45GBになります)

    • 開発環境-2の派生は、開発環境-2を元に作っているので、開発環境-2の内容も共有されます
環境の使い捨てができる(起動が早い、環境構築が早い、クリーンな環境)
  • Dockerの環境で何かソフトを追加する場合、始めの一回はインストールに通常の時間がかかります
    • インストールなどの操作は「Dockerfile」というテキストファイルに記載します
  • Dockerfileの処理結果は、逐次キャッシュされ、Dockerfileを編集後、環境の再構築を実行した際にも、変更が無かった部分はキャッシュを利用するため、非常に構築が早くできます
  • 起動するたび、クリーンな環境が手に入るので、環境の差異のせいで開発中のサービスが動かないということも無くなります
環境構築のレシピ(Dockerfile)を管理できる
  • テキストファイルなのでGitで管理でき、差分管理が簡単です!
  • テキストファイルに、構築手順が書いてあるので、手順を共有(情報共有)できます
  • 一度「Dockerfile」を作ってしまえば、他の環境へ反映が容易
    • 開発環境 → ステージング環境 → プロダクション環境 といった環境の差異はGitでブランチを作って管理しています

最後に

いかがだったでしょうか?私が感じている以外にも、いろいろメリットはあるかと思います。 GoogleMicrosoftAmazonといったIT界の巨人たちも、Dockerの利用はかなり積極的で、今一番ホットなテクノロジだと個人的には思っています。まだ使ったことが無いという方は、ぜひ使ってみてください。 そして「こんな風に使うとさらに便利だよ!」ということをこっそり教えてください

[速報]Google Container Engine発表。Dockerコンテナを実行しKubernetesで管理するクラウドサービス - Publickey

[速報]マイクロソフトがDockerと提携、次期Windows ServerでDockerを採用と発表。Microsoft AzureではDocker Hubとの統合も - Publickey

AmazonがAWS上でDockerコンテナを管理するEC2 Container Serviceを発表 - TechCrunch