6月からエンジニアとして働き始める素人の身としてDockerの勉強を始めたので備忘録として残す。
間違いがあればご指摘いただけますと幸いです。
Dockerとは
##### 仮想環境を構築するためのプラットフォーム、またはオープンソースウェアのこと。 Dockerという船(仮想環境)に適宜必要なアイテム(OS、言語、フレームワーク、サーバー類など)を積んだり降ろしたりして使用する。 実際Dockerのアイコンを見たらわかるが、クジラ?の上にたくさんの箱が乗せられている。★仮想環境とは?
自身のPC上に環境を構築するのではなく、バーチャル上に環境を構築するイメージ。
★環境構築とは?
開発に必要な材料を揃えるイメージ。
・OSは何を使う? → 例)Linux
・言語は何を使う? → 例)PHP
・フレームワークは何を使う? → 例)Laravel
・webサーバーは何を使う? → 例)Apache
・DBサーバーは何を使う? → 例)MySql
これらを開発する環境(自身のPCだったり仮想環境だったり)にインストールすること。
なぜ仮想環境を作るの?
##### ◎プロジェクトごとに開発環境を構築できるから プロジェクトAではOSはWindows、プロジェクトBはLinuxというようなことになっても、わざわざそのOSに対応したPCを用意する必要がなくなる。例えば、Linux OSのPCの仮想環境にWindows OSの環境を構築したり、同じWindows OSでも別バージョンのWindows OSの環境を構築できる。
また、自身のPCには最新バージョンのPHPがインストールされているが、開発環境では1つ前のバージョンを使うとなると、わざわざグレードダウンしなくてはならない、、、といった問題も解消できる。
なぜDockerを使うの?
①開発環境・本番環境ごとの設定が不要で、一度Dockerで環境を作れば開発環境だろうと本番環境だろうと関係なく使用できる 「Dockerfile」というファイルにDockerの利用に関する手順を記述することで、そのファイルを共有すれば誰でもどこでも同じ環境を構築できる。②環境構築の材料集めが容易
「Docker Hub」というクラウド上のリポジトリにプログラミング言語からサーバー類など一通りの材料が揃っており、コマンド1つで取得することができる。
Dockerで環境構築するまでの一連の流れ
Docker Hub上にある材料(プログラミング言語やサーバー類など)の雛形のことを「イメージ」という。 イメージとは設計図のようなもので、この設計図を元に「コンテナ」を作成する。 実際に使用するのはこのコンテナで、Dockerという仮想環境に積んだり不要になったら降ろしたりすることで開発環境を整える。前述のDockerfileとはコンテナを自動生成できる手順書のことで、コマンドによってDockerfileを読み込む。
ファイルの中にはどのイメージからコンテナを作成するのかなどの情報が記載されている。
このファイルを共有すれば誰でも同じ環境を構築できるというのはそういうこと。
この記事の作成途中に知ったがどうやら会社ではDocker使わないみたいなのでこれくらいで。。。
以上