読書レポート「Docker&仮想サーバー 」
目次
Chapter 1:なぜ開発用サーバーが必要なのか?
・Webアプリの仕組みについておさらいしよう
・サーバーにはLinuxが使われているのはなぜ?
・気軽にサーバー構築するなら「コンテナ」を使おう
Chapter 2:コンテナとは一体何もの?
・コンテナって何?
・コンテナの仕組み
・コンテナのメリットとデメリット
・コンテナを作るにはコンテナイメージが必要
・コンテナにはライフサイクルがある
Chapter 3:Dockerを使うための環境を構築しよう
・Dockerのアーキテクチャ
・Dockerを始めるには
・Dockerのインストール ~Windows編
・Dockerのインストール ~Mac編
・Dockerのアーキテクチャ
・Dockerを使う際に知っておきたいコマンド操作
Chapter 4:Dockerを使った仮想サーバー構築に挑戦!
・Dockerでコンテナを作成するには
・複数コンテナをラクに作れるDocker Compose
・Docker Composeで実際にコンテナを作ってみよう
・Docker Composeファイルの書き方を理解しよう
・コンテナ内へファイルをコピーするには
・コンテナを使い終わったら
・MariaDBコンテナを構築する
・コンテナ内でコマンドを実行するには
・WordPress + MariaDBコンテナを構築する
・コンテナ内のデータを残すには
・Flaskコンテナを構築する
・コンテナのネットワーク
Chapter 5:すぐに使えるDocker設定ファイル集
・Debianコンテナ
・Ubuntuコンテナ
・MariaDB + phpMyAdminコンテナ
・PostgreSQLコンテナ
・PostgreSQL + pgAdmin4コンテナ
・nginxコンテナ
・Djangoコンテナ
・Rubyコンテナ
・Ruby on Railsコンテナ
・PHP + Apache + MariaDBコンテナ
・ Spring Bootコンテナ
Appendix 1:Dockerをさらに学ぶには
Appendix 2:VS Code + Dockerで快適な開発環境を構築しよう
概要
本書はDockerやコンテナ、仮想サーバーについて分かりやすく解説されており、Dockerコンテナに対するハードルを下げてくれるような入門書となっている。
コンテナや仮想化の基本的な仕組みを理解しながら、サーバーを構築する方法が紹介されている。
レポート
Dockerは、Linuxのコンテナ技術を使ったもの。
コンテナはホストマシンのカーネルを利用し、プロセスやユーザなどを隔離することで、あたかも別のマシンが動いているかのように動かすことができ、軽量で高速に起動、停止などが可能である。
これを使用すると何がいいのかと言うと、開発環境を簡単に構築できるの一言に限る。
Dockerを使用しない場合、環境を作成するために様々なソフトウェアをインストールする必要がある。
また、別のプロジェクト環境を作成する際には、既にインストールされているソフトウェアとの依存関係により、エラーが発生することも多々ある。
Dockerを使用することで、環境に必要なソフトウェアをコンテナというまとまりにしてインストールすることができ、他のコンテナと競合しない環境を作成できるため、エラーが発生しなくなる。
コンテナは分かりやすく言うと、ゲームカセットみたいなものだと考えて欲しい。
家族で「あつまれどうぶつの森」をやる際に、お父さんはクールな町づくりにしたい、お母さんはナチュラル系、息子は遊園地を作りたい。と様々な環境を作りたいけど、残念ながら1つの島に共存はできない。(区分けすれば実際はできるが、、、)
そこで、ゲームカセットをそれぞれが所持していれば、カセットを入れ替えるだけで各々好きな環境で遊ぶことができる。
これがコンテナの利点である。
本書では全体を通して、
・Docker、コンテナの紹介
・各OSでのインストール方法
・サーバー構築実践
・カスタマイズ方法
が事細かに紹介されている。
また、サーバー構成例を記載した上で、自分好みにカスタマイズする方法も紹介されているため、普段の開発で困らない程度まで、理解できる。
また、Appendixと言うことで、公式ドキュメントの見方、調べ方や、
シェアの高いVSCode(エディタ)との連携方法なども紹介されている。
基本的にはDocker Hubと呼ばれるコンテナ共有サービスから、利用したいコンテナをダウンロードし、環境を構築する手順になるが、
自分でコンテナを作成し共有したい!という方法については詳しく紹介されていないため、熱心な勉強家の皆様は各自で調べてもらう必要がある。
所感
今まででDockerを触る機会は多数あったが、「基礎」に関してはあまり理解していなかったのが本音だ。
使いやすく、様々な記事が存在するため、基礎が分かってなくてもそれなりに使えてしまうからである。
使うことはできても、「構築」するとなると、やはり基本が分かっていないと自分の環境にあったものが作成できない。
今回この本を手に取り、基礎が理解できたうえでDockerと向き合ってみると、ここのコマンドはこういうことをやっていたのか!などの発見が多々あり、基礎理解の大切さを改めて感じた。
正直なところ、
docker-compose
docker compose
これの違いすら理解できていなかったが、
なるほど、Docker Composeのバージョンが違うのか!と今更になって理解した。
この辺りのバージョンは、.yaml を読み込む大切な部分であるため、一度初心に返り、学習に励んでいただきたい。