概要
- Dockerの用語の理解が若干進んできたので忘れないようにまとめておく
ご注意
- 一部理解に誤りがある可能性があります。
用語まとめ
そもそもDockerって?
- コンテナ技術のコンテナを管理するツールだよ
- Dockerの他にもLinux ContainersとかHyper-Vコンテナとかいろいろあるよ
コンテナって?
- ものを運ぶコンテナのイメージそのままだよ
- Linux上につくられるよ
- じゃあなんで自分のMacの上にコンテナつくれるの?
- Dockerが裏でLinuxを起動させてくれているよ
- Linux起動しているってなんか重そう
- そんなに重くないよ、コンテナ建てるためだけの機能しか入ってないLinuxを建ててくれているからね
- じゃあなんで自分のMacの上にコンテナつくれるの?
- アプリケーションを動作させるのに必要なものが原則一個づつ入っているよ
- 例えばlaravelの開発環境を作りたいなら下記のコンテナが必要だよ
- PHPのコンテナ
- DBのコンテナ
- Webサーバーのコンテナ
- 例えばlaravelの開発環境を作りたいなら下記のコンテナが必要だよ
- コンテナの中と外は隔たりがあるよ
- PHPとかDBとかWebサーバーがそれぞれ隔たれた場所にあるとそれぞれの通信がだるそうだよね、でも大丈夫だよ
- 後から説明するdocker composeが全部解決してくれるから気にしなくていいよ
- Dockerイメージを元に作成するよ(
$ docker runコマンドを実行するとDockerイメージからコンテナを作成するよ)
Dockerイメージって?
- コンテナの設計図だよ
- DockerHubから取得するか、Dockerファイルから作るよ(
$ docker buildコマンドを実行するとDockerファイルからDockerコンテナを作成するよ)
DockerHubって?
- 公式もしくは有志の人が作ってくれたDockerイメージが配布されている場所だよ
- ファミレスのドリンクバーみたいな感じだよ(ジュースがDockerイメージ)
- Dockerのユーザー登録をしておくと無制限にDockerイメージを取得することができるよ、おすすめだよ
Dockerファイルって?
- Dockerイメージをコード化したものだよ
- DockerHubに自分がほしいイメージがなかった時はDockerファイルを自分で書く必要があるよ
じゃあ結局メリットってなんなの?
- Dockerファイルやバージョンを指定して公式のDockerイメージを使えば誰でも同じ開発環境構築ができるよ
- そもそもDockerファイルを使えば開発環境構築をコードで管理できるよ
- 人の手があまり入らず開発環境構築ができるから楽だし間違いがないよ、すぐ開発に移れるね、やったね
コンテナ間の通信ってどうやるの?
- コンテナのIPとポートを指定すればできるよ、でもIP指定はちょっとだるいよね
- docker composeを使って簡単に行うことができるよ
コンテナが増えてきて管理がだるいんだけど
- それもdocker composeを使えば楽になるよ
docker compose
- コンテナをまとめて管理できるものだよ
- docker compose用の設計図を書いておけば一つのコマンドでまとめて関連するDockerコンテナを起動することができるよ
- ちょっとだけ書き方は違うけど
$ docker buildとか$ docker runとかの命令を記載するよ - ここまで理解できれば「Dockerなんとなく分かります!」って言っていいのかもね