開発のための仮想環境は Docker で作ろう

仮想環境を実現するアプリケーションはいくつかありますが、
まず Docker を利用できないか検討するとよいでしょう。
Docker を使ったワークフローは
他の仮想環境を実現するアプリケーションよりも効率的であるためです。
この記事では仮想環境を実現するアプリケーションを比較します。

プログラム開発における仮想環境の重要性については
次の記事を参考にしてください。

参考: プログラム開発の準備には仮想環境を使おう

実用から入る Docker 講座 目次に戻る

仮想環境を実現するアプリケーション

開発のための仮想環境を実現するときに
よく、次のようなアプリケーションが使われます:

  • VirtualBox
  • VMware
  • Docker

これらをユーザー視点で見たとき、VirtualBox と VMWare は似た特性を持っています。
Docker は全く異なる特性のアプリケーションです。

Docker の利点

起動・停止が高速

Docker は起動・停止にかかる時間が一瞬です。

環境構築に必要なコードが少量

Docker は複数の仮想環境を起動しても PC への負荷が小さいというメリットがあります。
このメリットを活かして、すでに環境構築され、公開されている仮想環境を組み合わせることで
環境構築に必要なコードを最小限にすることができます。

コードが少ないということは、うまく動かなかったときの原因調査はとても楽になります。
原因を探す範囲が少なくて済みますし、
Web サイトで誰かに質問するときも提示するコードが少なくて済みます。

効率的に環境構築の自動化プログラミングが可能

Docker は環境構築をプログラミングして自動化する方法が機能として組み込まれています。
環境構築の自動化では、間違った手順をプログラミングしてしまったり
想定外のことが原因で環境構築に失敗することがよくあります。
Docker は手順ごとに仮想環境の状態を保存するので、
環境構築に失敗しても、すぐに間違う直前の工程まで戻って環境構築をやり直すことができます。

仮想環境であっても、
アプリケーションやライブラリー、パッケージのインストールにかかる時間は
通常のインストール時と変わりません。
なので、環境構築の手順を間違えたとき、できれば最初からやり直したくありません。
最初からやり直すと時間を大きく失うことになるからです。

VirtualBox / VMware との比較

起動・停止

VirtualBox / VMware は起動に時間がかかります。

これは、Docker は「コンテナ化」(Containerization) という方式で仮想環境を実現しているのに対し、
VirtualBox / VMware は「仮想化」(Virtualization) という方式で仮想環境を実現しているためです。

参考:
Virtualization vs. Containerization | Liquid Web
コレ1枚で分かる「仮想マシンとコンテナの違い」 – ITmedia エンタープライズ

環境構築に必要なコードの量

まず、VirtualBox / VMware 単体では環境構築の自動化ができないので、
Vagrant, Packer, それに Ansible などを組み合わせて自動化することになります。
様々なコードが組み合わされることになる上にコード量も非常に多くなります。
また、Vagrant, Packer やそれらのプラグインは更新頻度が下がっているので
環境構築の自動化を続けていくこと自体が難しくなっている面もあります。

環境構築の自動化プログラミングにかかる時間

VirtualBox / VMware の環境構築を Vagrant で自動化する際に
Ansible などの「冪等性」という特性を持つツールを組み合わせれば、
環境構築に失敗して続きからやり直したいとき、
その時点までの処理をスキップすることは簡単にできます。

しかし、実行してしまった手順は Vagrant や Ansible で取り消すことができないので
仮想マシンを削除して環境構築をやり直すことになります。
アプリケーションやライブラリー、パッケージのインストールに
多くの時間を奪われることになります。

どうやって Docker をインストールしたらいいの?

Windows / Mac で Docker を使う場合は Docker Desktop をインストールします。
インストーラーは次の場所にあります:

Windows の場合は Chocolatey を、
Mac の場合は Homebrew を使ってインストールすると
他のアプリケーションと一緒にアップデートできて便利です:

Chocolatey Software | Docker Desktop
docker — Homebrew Formulae

参考: Chocolatey の使い方

システム要件の一覧と確認方法については、次の記事にまとめておきました:
Docker Desktop のシステム要件をどうやって確認したらいいの?

実用から入る Docker 講座 目次に戻る

タイトルとURLをコピーしました