【Docker】Dockerの概要について
本日はDockerについてその概要を解説したいと思います。
Dockerとはなんぞや
コンテナ型仮想化技術を使って、アプリケーションの実行環境が作れるものです。
例えば、Railsを手元のMacで実行しようとすると、RubyやMySQLをインストールする必要があると思うのですが、そのような実行環境を作る仕組みのことです。
言葉だけだとわかりにくいのイメージで説明します。
まず、以下のような本番環境を構築したいとします。
WebサーバにNginx、APサーバにUnicorn、DBサーバにMySQLというパターンです。
この本番環境を手元のMacで仮想的に構築するのがDockerです。
Dockerを使うと以下のような実行環境をローカルに簡単に作ることができます。
Dockerのメリット
Dockerを使わなくてもアプリケーションの実行環境は作れるし、デプロイもできますが、Dockerを使うと何が嬉しいのでしょうか。
大きく2つのメリットがあります。
- ポータビリティ
- 不変なインフラ
ポータビリティ
コンテナ化された環境を他の開発者や本番環境に配布することで、同じ動作環境が保証できます。
不変なインフラ
ソフトウェアを動かすライブラリなどのインフラを変更せずに、変更したい時は新しいコンテナを作り直すという考え方です。
新しく作り直すコンテナの設定はコードで定義されており、どのような環境でも再現しやすくなっています。
まとめると「簡単に実行環境が作れて、どんな環境でも同じよう動かせる」というのがDockerの最大のメリットです。
参考
Docker/Kubernetes 実践コンテナ開発入門
初学者のつぶやき
laravelの実行環境をDockerで作ってみたのですが
- 開発環境作るのめっちゃ難しい
- 本番環境へのデプロイめっちゃ難しい
でそのメリットが全然わかりませんでした。正直。
早くDockerの良さを実感できるエンジニアリになりたい。。。
次回はlaravelの開発環境をDockerで構築する方法について、特にハマりやすいポイントを解説したいと思います。