迷い人

日々勉強。勉強の先に何か見つかるといいなぁ

【Docker】Dockerの概要について

本日はDockerについてその概要を解説したいと思います。

 

 

Dockerとはなんぞや

コンテナ型仮想化技術を使って、アプリケーションの実行環境が作れるものです。

 

例えば、Railsを手元のMacで実行しようとすると、RubyMySQLをインストールする必要があると思うのですが、そのような実行環境を作る仕組みのことです。

 

言葉だけだとわかりにくいのイメージで説明します。

 

まず、以下のような本番環境を構築したいとします。

 

f:id:oyaoya1123:20191110022403p:plain

 

WebサーバにNginx、APサーバにUnicorn、DBサーバにMySQLというパターンです。

 

この本番環境を手元のMacで仮想的に構築するのがDockerです。

 

Dockerを使うと以下のような実行環境をローカルに簡単に作ることができます。

 

f:id:oyaoya1123:20191110163919p:plain

 

Dockerのメリット

Dockerを使わなくてもアプリケーションの実行環境は作れるし、デプロイもできますが、Dockerを使うと何が嬉しいのでしょうか。

 

大きく2つのメリットがあります。

  • ポータビリティ
  • 不変なインフラ

 

ポータビリティ

コンテナ化された環境を他の開発者や本番環境に配布することで、同じ動作環境が保証できます。

 

不変なインフラ

ソフトウェアを動かすライブラリなどのインフラを変更せずに、変更したい時は新しいコンテナを作り直すという考え方です。

新しく作り直すコンテナの設定はコードで定義されており、どのような環境でも再現しやすくなっています。

 

まとめると「簡単に実行環境が作れて、どんな環境でも同じよう動かせる」というのがDockerの最大のメリットです。

 

参考

Dockerとは - 入門 Docker

Docker/Kubernetes 実践コンテナ開発入門

 

初学者のつぶやき

laravelの実行環境をDockerで作ってみたのですが

  • 開発環境作るのめっちゃ難しい
  • 本番環境へのデプロイめっちゃ難しい

でそのメリットが全然わかりませんでした。正直。

早くDockerの良さを実感できるエンジニアリになりたい。。。

 

次回はlaravelの開発環境をDockerで構築する方法について、特にハマりやすいポイントを解説したいと思います。