
Docker入門:アプリ実行環境の革新
船で荷物を運ぶための入れ物と同じように、必要なもの全てを詰め込んでアプリを動かすための技術、それがDockerです。正式にはDocker Engineと呼ばれ、無料で使えるオープンソースの仕組みです。
Dockerのすごいところは、アプリと、アプリが動くために必要な周辺の道具一式をまとめて、コンテナと呼ばれる小さな入れ物に閉じ込めてしまうところです。この入れ物を別のコンピュータに持っていけば、まるで魔法のように同じようにアプリが動きます。
従来の仮想化技術では、アプリを動かすための土台として仮想マシンと呼ばれる、まるごと別のコンピュータをソフトウェアで作り出して使っていました。仮想マシンは、まるで本物のコンピュータのように、独自のOSや周辺機器を全て持っているため、サイズが大きくて動きも遅くなりがちでした。
Dockerは、コンテナ仮想化技術という新しい方法を使っています。コンテナは、ホストコンピュータのOSの中核部分(カーネル)を共有して動くため、仮想マシンに比べてはるかに小さく、起動も速く、資源の消費も抑えられます。まるでアパートのように、建物全体(OSのカーネル)は共有しながら、各部屋(コンテナ)で独立して生活できるイメージです。
Dockerを使えば、開発したアプリが、開発者のコンピュータでは動くのに、テスト担当のコンピュータでは動かない、といった環境の違いによる問題を解消できます。開発、テスト、本番環境など、どのコンピュータでも同じようにアプリが動くため、開発者はアプリを作る作業そのものに集中できます。また、コンテナは非常に軽いので、必要な時に必要なだけすぐに立ち上げたり、停止したりできます。これにより、開発のスピードアップや、コンピュータ資源の効率的な利用につながります。
まるで荷物を運ぶコンテナ船のように、アプリをコンテナに詰め込んで自由に移動させ、必要な場所で必要な時にアプリを動かす。これがDockerの目指す世界です。