Docker(ドッカー)とは、シンプルで軽量なコンテナ型の仮想化環境です。コンテナ技術の採用により、仮想化ソフトウェア(例えばVMware PlayerVirtualBoxParalles Desktop等)と比べて起動も速く高速に動作します。

※コンテナ型の仮想化環境については、@ITの記事「アプリ開発者もインフラ管理者も知っておきたいDockerの基礎知識」がわかりやすいでしょう

2016年7月に「Docker For Windows」と「Docker For Mac」が正式リリースされたことで、Windows・macOSでも環境の違いを意識することなくDockerを導入できるようになりました。

Dockerは、サーバーサイドエンジニアやインフラエンジニアだけでなく、Webのフロントエンドエンジニアにも非常に有用なツールです。本記事では、フロントエンドエンジニアがDockerを利用することで得られるメリットや基本的な使い方について紹介します。

Dockerとは軽量で使いやすい仮想化技術

Dockerでは、OSとアプリケーションがパッケージ化されたDockerイメージと呼ばれるファイルを使って、仮想環境を構築します。DockerHubと呼ばれるサイトには10万以上のDockerイメージが提供されており、こちらを利用することでOSやミドルウェア、アプリケーションのインストールや初期設定などの手間のかかる作業を行う必要なく、すぐに動作する環境を手に入れることができます。

DockerHubには、WordPressやJenkins、nginxなど様々なイメージが準備されています。「official」と記載されているDocker社が公式に提供しているイメージの他、一般ユーザーが提供しているイメージも多数公開されています。


▲ DockerHubのリポジトリー一覧

取得したイメージを起動するとコンテナ(仮想環境)が生成されます。コンテナは複数起動できるため、Webサーバー、DB、CIツールなど複数のコンテナを起動し連携することも可能です。また、取得したイメージをベースにカスタマイズした環境を再度イメージ化することもできます。


▲ Dockerの利用イメージ

Dockerを利用することで得られるメリット

フロントエンドエンジニアにとっての大きなメリットは、Dockerイメージを共有することで、開発メンバー内で同一の開発環境を簡単に構築できることです。開発環境のDockerイメージまたはDockerfileと呼ばれる仮想環境をコード化したファイルを開発メンバーに共有することで、同一の開発環境を構築できます。そのため、新規に開発メンバーが参加した場合にも簡単に同一環境の構築ができますし、環境の差異がでないため「◯◯さんの環境でのみエラーが発生する…」というようなことも無くなります。

サーバーサイドエンジニアやインフラエンジニアによって開発環境が更新された場合でも、最新のDockerイメージを共有することで、常に最新の開発環境を利用できます。サーバーサイドエンジニアに環境構築や更新手順を教えてもらう必要もなくなるため、無駄なやり取りが無くなり効率的に開発が進められます。

また、複雑な環境でなければサーバーやインフラの知識があまり無くても、基本的なDockerの操作を覚えれば環境を構築できることもメリットとして挙げられます。

次のページでは、実際にDockerで仮想化環境を構築する手順を説明します。