やみとものプログラミング日記 やみとものプログラミング日記
TOP Docker勉強ノート
Docker勉強ノート

Docker勉強ノート

プログラミング
作成日時: 2021年9月4日
更新日時: 2021年9月5日
こんにちは、やみとも(@yamitomo_blog)です。
この記事はDockerについての勉強ノートです。
「図解即戦力 仮想化&コンテナがこれ1冊でしっかりわかる教科書」という本で勉強しています。


用語整理

クラウド

ユーザがインフラ(サーバやストレージなど)やソフトウェアを持たなくても、インターネット経由で必要な時に必要なだけサービスを利用できる考え方のこと。例:Gmail

DevOps

開発(Development)者と運用(Operations)者が協力してサービスを提供する手法のこと。

マイクロサービス

依存関係の無い複数の小さなサービスを組み合わせて全体として大きなサービスを提供する設計手法。
コンテナ技術と相性が良い

モノリス

マイクロサービスに対して、大きなサービスを単一で提供する設計手法。

Docker

Dockerとは、コンテナの実行やコンテナイメージの作成・配布を行うためのプラットフォームのこと。


サーバー仮想化の種類

ホストOS型

物理サーバーにインストールされたホストOS上で仮想化ソフトウェア(VirtualBoxなど)を動作させる。

ハイパーバイザ型

ホストOS無しで動作するハイパーバイザと呼ばれる仮想化ソフトウェア(Hyper-Vなど)を利用する。

コンテナ型

コンテナというアプリケーションと実行環境をまとめて隔離するしくみを利用し、OS単位ではなくアプリケーション単位で仮想化する。


コンテナ型仮想化

コンテナには複数のアプリケーションを導入できるが、原則的に1コンテナに1アプリケーション(1プロセス)で構築し、複数のコンテナを組み合わせて動作させる方が良いとされる。

コンテナ技術では、可能な限りデータをコンテナに含めないのが基本。
データだけはホストOS上で管理し、コンテナからアクセスできるようにする。

コンテナとは

コンテナはOS上で実行されているプロセス
通常のプロセスとの違いは、他のプロセスから隔離されるように設定されていること。

名前空間という仕組みにより隔離されたファイルシステムを実現している。
通常のプロセスはOSのファイルシステムを他のプロセスと共有するが、コンテナは専用の独立したファイルシステムを使用する。

コンテナイメージとは

コンテナイメージとは、コンテナを実行するためのテンプレート。
コンテナはコンテナイメージから生成される。
オブジェクト指向プログラミングにおけるクラスとオブジェクトの関係に似ている。

ボリュームとは

ボリュームは、コンテナによって読み書きされるデータを永続化するための仕組み。
※永続化とは、プログラムが終了してもデータが失われないように保存すること。