調べてみた知らない技術やキーワードと出会ったら、概要だけでも調べておくべきである。......と技術者として至極当たり前のことをふと思ったので、箇条書きレベルですが、調べた内容をブログに残しておきます。今回の調査対象は『Docker』です。Dockerとは?『Docker』は、コンテナと呼ばれるOSレベルの仮想化環境を提供するオープンソースソフトウェア。Dockerコンテナ型であるDockerは、完全仮想化を行うハイパーバイザ型と比べて、ディスク使用量が少ない、環境作成や起動が速い、性能劣化がほとんどない、仮想環境ごとにOSをインストールする必要がない、などの特徴を持つ。Dockerを使うの?複数人での開発において、環境を統一することは環境依存の不具合を発生させないためにも、大事なことである。Dockerを使うことで、複数人で環境をお手軽に共有したり、再利用することが可能になる。ソースコードのバージョン管理のように、環境イメージを段階的に残しておけば、設定誤りなどしたときでも前の状態に戻すことができる。必要なくなったり、動かなくなってしまった環境を破棄するのも容易にできる。開発中で使っていた環境を、そのまま本番環境に持っていくこともできる。環境をコード化したもの(Dockerfile)を構成管理し、CircleCIなどのCIツールを使えば、環境面のテストも自動的に行える。VirtualBoxと何が違うの?仮想化技術には大きく「ハイパーバイザ型」と「コンテナ型」の二種類あり、VirtualBoxはハイパーバイザ型の仮想化技術である。ハイパーバイザ型の仮想化では仮想環境毎にOSを丸ごとインストールする必要がある。アプリケーションに必要のないサービスやファイルも含まれるため、コンテナ型と比べると重くなる。仮想化技術という意味ではDockerもVirtualBoxもできることに大きな差はなく、とりあえず「コンテナ型であるDockerのほうが軽量」ということだけ把握しておけば良さそう。調査中に出くわした関連用語を雑に並べておく。