こんにちは、かじです。今回はざっくりと理解できるDockeの概要を解説していきたいと思います。
Dockerとは
Linux仮想環境を使用してコンテナ型の仮想化技術です。
WebサーバーはOS上にミドルウェアやプログラミング言語などをインストールしてサーバーとして動作しています。
開発する際は、サーバー上に作成した環境を開発環境にも作成する必要がありますが、その環境構築を容易にし、さらに本番環境の構築も容易にしてくれるのがDockerになります。
仮想化とは
仮想化は一つのコンピューター内で独立した環境を用意するための技術になります。
仮に、一つのコンピューター内でアプリケーションAを実行する際、データベースやプログラミング言語、ライブラリやフレームワークなどの実行環境が必要になります。コンピューター内で動作するものがアプリケーションAのみであれば、問題はありませんが、別のアプリケーションBを、別のバージョンのプログラミング言語など異なる実行環境が必要な場合、アプリケーションAに影響を与えてしまい、動作しなくなってしまう場合があります。
そのため、それぞれのアプリケーションを動かすためには、独立した環境を用意する必要があります。その独立した環境を用意することが仮想化になります。
プログラミングの面だけで言えば、仮想化することによって、プロジェクトごとによって異なる環境を容易に準備したり、開発環境に本番環境と同じ環境を用意することができます。
仮想化にはホスト型やハイパーバイザー型といった他OSのソフトを使用するのが主目的であるものや、Dockerのように複数のサーバー構成のシステム開発を行うことが主目的である、コンテナ型のような種類があります。
コンテナ型は新たにホスト型やハイパーバイザー型のようにOSを準備することなく、ホストOSのカーネルを使用することで、コンテナという小さい領域の中に必要最低限のリソースを準備することで仮想環境を用意することが可能で、軽量に動作することが可能です。
Dockerのメリット
メリットその1:本番環境と同じ環境で開発することが可能
それぞれのパソコンで開発をしていると、ローカル環境では動くが本番環境では動かないということが起こります。それはローカルの開発環境とと本番環境で環境が異なることが原因で起こりえます。その本番環境と開発環境の差異を生まずに、本番環境と同じ環境で開発することができるのがDockerのメリットになります。
メリットその2:開発環境を統一することができる
本番環境と開発環境で環境が異なるということは、複数人で開発している場合、デバイスやOSの違いから開発環境同士でも環境に差異が生まれるという場面が起こることはあります。
Dockerであればその差異も生まず、同じ環境で複数人で開発することが可能になります。
メリットその3:環境を一人が作ればみんなで使うことができる
DockerfileやDocker-compose.ymlのファイルを一人が作成して、共有すれば使用する側はコマンド一つで同じ環境を使用することができます。
メリットその4:ローカルで開発した環境を本番環境へデプロイすることができる
通常本番環境を構築する際は、本番環境で必要なDBやWEBサーバーなどのソフトウェアをインストールし、設定をするなど手動でする必要があります。
しかしながら、Dockerであれば、本番環境にDockerをインストールすることで、ローカル環境で使用していた環境を本番環境へ展開することが可能です。
このようにDockerは開発、デプロイの際に環境による問題を解決してくれます。