【Docker】Dockerの基礎を理解しよう
Dockerとは?

Dockerは、コンテナ仮想化を用いてアプリケーションを開発・配置・実行するためのオープンソースソフトウェアです。
Dockerで開発環境を作りたい方は、こちらの記事まで!
コンテナ仮想化と仮想マシンの違い
コンテナ
コンテナは、コードと依存関係を一緒にパッケージ化しアプリ層を構築します。複数のコンテナを同じマシンで実行し、OSカーネルを他のコンテナーと共有できる。各コンテナーは、ユーザスペースで分離されたプロセスとして実行されます。
仮想マシン
仮想マシン(VM)は、1つのサーバを多数のサーバに変換する物理ハードウェアです。ハイパーバイザー(VMwareやHyper-V)を使用し、1台のマシンで複数の仮想マシンを実行できます。各仮想マシンには、OS、アプリケーション、必要なバイナリ、およびライブラリの完全なコピーが含まれる。
なぜ仮想化が必要なのか?
プログラミングを始めた方は、なぜ仮想化が必要なのかを疑問に思うでしょう。通常システムを開発する場合は、ローカルマシン(windowsやMac)を用います。
しかし、納品時にはシステムをCentOsやUbuntuなどのLinux環境で動作させる場合が多いくなります。そこで、仮想化を利用することで開発環境と納品環境の違いをある程度無くすため仮想化を利用し環境を同じにします。
Linux環境で納品する理由
IT業界では、Web上で稼働することを前提としたシステム開発ことが多くなっています。
このWebアプリケーションを動作させるには、サーバーマシンを利用して動作させます。商用のアプリケーションでは、システムダウンを防ぐことが重要になってきます。
そこでLinuxサーバが利用されます。
- 無料OS(オープンソース)
- 少量のメモリで動作可能
- 不要なアプリケーションが無い
Linuxの操作は、コマンド入力で操作されます。そのため機能が最小限であり、システムにのみメモリを割くことができます。
Dockerを選ぶ理由
コンテナ仮想化が便利なのは分かったと思うのですが、なぜDockerを選ぶのでしょうか?
- コード化されたファイルを共有し、誰でも同じ環境が構築できる
- windows、Mac、Linuxで動作可能
- ホスト環境を汚さない(アプリのインストールが無くなる)
同じ環境が構築できる
Webシステムの場合、Apache、MySQL、PHPのアプリケーションが必要になります。同然ながらそれぞれにバージョンが存在し、本番環境と開発環境では異なることが多い。
また、各社員の開発環境でさえバージョンが違うことも珍しくありません。こうなるとバグ発生時に検証が非常に手間が掛ってしまう分けです。
なので、本番環境も開発環境もバージョンは揃ってた方が良いに越したことはありません。
複数のOSで動作可能
実は、Linux上でも動作可能になっておりLinuxでDockerを動作されば本番環境と開発環境が全く同じ環境になるわけです。これがDockerの最大の利点です。
ホスト環境を汚さない
アプリケーション開発には、上記で説明したようにApache、MySQL、PHPなどをインストールしなかければなりません。
しかし、Dockerを使うとその必要がなくなりDockerをインストールするだけで良くなります。
まとめ
まだまだDockerを利用している企業さんは少ないと思います。
本当に環境構築が楽になるのでぜひこの記事を読んでいただき、企業内でDockerを使われることを願います。
テスターにDockerの凄さを説明してもあまり理解してくれず悲しい思いをしました。(笑)