Dockerとは
異なるサーバーの上で同じ仮想環境を再現できる便利ツール
Infrastructure as Codeとしての機能であるDockerfile" と "Image"で構成される。
Infrastructure as Codeはインフラ構成をコードに落とし込んだもの。
VMに比べて軽量で仮想化できて便利。
入門Dockerで学習する
Nginxとは…オープンソースのwebサーバー
AlpineLinux…リナックスディストリビューションのひとつ
リナックスディストリビューション…
再配布・改変の自由を認めたオペレーティングシステムであるLinuxをパッケージ化したもの。カーネル、シェル、各種ドライバー、アプリケーションソフトなどがひとまとめになっている。
Weblio辞書
cat…ファイルのコマンドを表示する
Component
image
…特定の環境のスナップショット、わかりやすくいうと特定環境のコピー
- Docker Imageは特定の環境のスナップショットで、Imageを起動することで環境を再現することができる
- DockerHubから様々なDocker Imageを取得することができる
- tagを指定することで特定のバージョン(とレジストリ)を使用することができる
入門Docker
dockerfile
imageを作成する元となるファイル
- Dockerfileを記述してDocker Image を作成する
- Docker Image はDockerレジストリへアップロードすることで容易に保管/配布ができる
- Dockerfileは基本的に7個のコマンドの組み合わせで作成できる
入門Docker
Docker Container
imageをもとに作成されるファイル
フォアグラウンド…バックグラウンドの反対、人間に見える一番前の部分。
- コンテナは隔離された環境で実行される
- Dockerコンテナは1つのコマンドを実行してプロセスを実行する
- 基本的に「1コンテナ1プロセス」
- ライフサイクルは実行されたコマンドがフォアグラウンド上で実行されている期間
- バックグラウンドでプロセスが立ち上げられていてもフォアグラウンドでコマンドが終了したらコンテナは停止する
入門Docker
network
- 1プロセス1コンテナ、複数プロセスはネットワークを通して通信を行う。
- Bridgeを基本的に使用する。
入門Docker
volume
コンテナ上で作成されたファイルはコンテナの終了とともに消えるが、
volumeを使用することでデータを永続化できる。
- データの永続化にVolumeを使用する
- コンテナ間でVolumeの共有は可能
- Dockerはエフェメラルになるような設計を求められるため、基本的にVolumeは使用しないことが好ましい。
入門Docker