以下、本書に記載のあった点で覚えておきたいことを備忘録としてメモ。改めてDockerの基礎をインプットするのに良い章だった
ホスト型仮想化技術では仮想化ソフトウェアによってコンピュータリソースを抽象化して再現する分時間がかかるので、コンテナ型仮想化技術のDockerの方がマシンを迅速に起動できる
Docker利用の意義
- 不変な実行環境による冪等性の確保
- 実行環境構築とアプリケーション構成のコード化
- 実行環境とアプリケーションの一体化によるポータビリティ性の向上
- システムを構成するアプリケーションやミドルウェアの構成管理の容易さ
不変な実行環境による冪等性の確保
- アプリケーションはOSやメモリ、コンピュータリソース、言語ランタイム、ライブラリ等さまざまな要素に依存しているが、Dockerではアプリケーションが依存する環境差異によって発生するトラブルを回避することが可能
- Dockerfileによって構成を管理するのでInfrastructure as Codeが実現され、構成をコード管理可能
- OS部分の多くをホストOSと共有している分起動までの開始時間が短いので、インフラに更新があった際に既存のものを更新するのではなく破棄して作り直すImmutable Infrastructureと相性が良い。既存のコンテナを高速に破棄して作成し直すことが可能
アプリケーションとインフラがセットで構築される
- インフラの再現とアプリケーションのデプロイが完全に分離されていると、環境の差異を生み出す温床になる。DockerコンテナはOS(インフラ)とアプリケーションを同梱した箱のようなものなので、アプリケーションとインフラがセットになる
Docker Compose
- 複数コンテナを利用したアプリケーションの管理をしやすくする
- 依存関係を定義して起動順を制御できたりする