読書メモ:Docker
スキルの棚卸のため、こちらも過去読んだ本について書きます。
Dockerは、OSSを利用した開発では現在必須ではないでしょうか?
1つのサーバーに多数のサービスを(モノリシックに)インストールして、OSをアップデートした瞬間システムが停止するという悲劇をDockerコンテナを利用することでホストと分離でき避けることがでます。
そのため、開発および運用が大変効率的になりました。
サービスを役割ごとにマイクロサービスとして分割することで、DockerHubのようなコンテナレジストリから簡単に様々なバージョンをダウンロードでき、VMwareなどの仮想化ソリューションよりも手軽にアップデート/(上手く動かない場合は)ダウングレード可能になったのが大きいと思います。
Kuberentesにコンテナ実行環境を移行すれば、セッション等を共有するようにアーキテクチャ設計されている必要がありますが、冗長化やスケールアップが容易です。
また、docker-composeによって簡単にさまざまなサービスを起動することができます。
この本では、オライリーらしく大変詳しくDockerについて書かれています。
しかし、中盤からクラスタ環境の話が多く古いため現在あまり役にたたない内容と思います。
中盤以降は流し読みにして、個人的にはKubernetesの学習をした方が、良いと言えます。
しかし、Dockerの概念、Dockerfileの作り方や、ボリュームの理解などは今でも必須なので、小説感覚で読むには良い書籍です。
現場では、Dockerfileや起動時のentrypoint.shの作り方、docker-composeに纏めて開発チームで開発環境を共有、運用ではCI/CDなどによる自動化、Kuberentesの理解やk8sクラスタでの利用に重点を置いた方が良いと思います。
Dockerだけでなく、ネットワークの基礎知識(ポートフォワーディングやローカルネット)、Linuxの知識やコンテナ化する対象の知識も必要になるのがDockerの難しいポイントと言えそうです。
憶えてしまえば、便利で長く使えるスキルなのでDockerの勉強をおすすめします。