Dockerとは
-
Docker社が開発している、コンテナ型の仮想環境を作成、配布、実行するためのプラットフォーム
-
Linuxのコンテナ技術を使用
-
コンテナは、ホストマシンのカーネルを利用し、プロセスやユーザーなどを隔離する
- 軽量・高速
-
-
ミドルウェアや各種環境設定をコード化して管理できる(=Infrastructure as Code)
-
ローカル・本番環境問わず
- 誰でも同じ環境が作れる
- 環境の再配布・再利用が容易
-
-
Dockerの正体
- Linux Container(LXC)
- LXCにおけるコンテナのカスタマイズ(設定ファイル作成やシェルスクリプトによるファイルインストール作業など)を楽に行うためのコンテナ管理ツール
-
Docker for Mac
- Macにデフォルトで入っているHyperKitという仮想化ツールで仮想マシンを立ち上げ、Linuxを起動してDockerを使えるようにしている
コンテナ(Linuxコンテナ)とは
-
システムのその他の部分から分離された一連のプロセス
- プロセスのサポートに必要な全てのファイルを提供する個別のイメージから実行される
-
OSとカーネルを共有し、アプリケーションプロセスをシステムの他の部分から独立させる(単一のOSで実行される)
他の仮想環境とコンテナの違い
一般的なPC
-
構成
ホストOS型(広義の意味でホストOSを使うハイパーバイザ型に定義されることもある)
-
構成
-
メリット
- 手軽に仮想化を実現できる
- OS選択の自由度が高い
-
デメリット
- ディスクやメモリの消費多い
ハイパーバイザ型(ハードディスクを用いるパターン)
-
構成
-
メリット
- ホストOSの処理を必要とせず直接ハードウェアを制御できるため処理速度が速い
-
デメリット
- 手軽に仮想環境を実現できない(ホストOSをそのまま使えなかったり、専用の物理サーバーを必要とする場合がある)
コンテナ型
-
メリット
- 手軽に仮想環境を実現できる
- ディスクやメモリの消費が少ない
-
デメリット
- Linuxカーネルを使ったOSしか使えない
Dockerのイメージとコンテナの概要
※ホストOS型とハイパーバイザ型の違い Think IT - ホスト型とハイパーバイザー型の違いは何?VMware vSphere Hypervisor の概要が参考になる。
- ホストOS型
- OS上に仮想化ソフトウェアをインストールする
- ハードウェアへのアクセスはホストOSを経由するので、オーバーヘッドが発生し、パフォーマンスが大きく発揮されない。
- ハイパーバイザ型
- ホストOSを必要とせず、サーバーへ直接インストールする。
- ハードウェアを直接制御できるので、パフォーマンスが出やすい。
基本コマンド
-
docker build- Dockerfileからイメージを作成
-
docker run- イメージからコンテナを起動
-
docker commit- コンテナからイメージを作成
補足
-
カーネルとは
-
OSの基本機能の役割を担うソフトウェア
- カーネルだけではOSの利用が困難なので別途ソフトウェアと組み合わせて利用するのが一般的
-
カーネル+ソフトウェア = ディストリビューション
- CentOSやUbuntu→Linuxカーネル+ソフトウェアのディストリビューション
-
参考
- Docker公式サイト
- Docker入門(第一回)~Dockerとは何か、何が良いのか~
- Linuxコンテナとは
- サーバーの仮想化とは?仕組み、メリット・デメリットをわかりやすく解説します
- 15分で分かるLXC(Linux Containers)の仕組みと基本的な使い方 エンジニア向け 2014.06.16
- LXCを使った権限分離とテンプレートのカスタマイズ
- Dockerのイメージとコンテナの概要と各種コマンド(随時更新するかも)
- Linux コンテナの内部を知ろう / OSC 2018 Kyoto
- Think IT - ホスト型とハイパーバイザー型の違いは何?VMware vSphere Hypervisor の概要