用語集

Docker プロジェクト界隈で使われている用語の一覧です。

aufs

aufs (advanced multi layered unification filesystem;複数のレイヤを統合した高度なファイルシステム、の意味)は、Docker がストレージ用のバックエンドとしてサポートする Linux の ファイルシステム です。

ベース・イメージ(base image)

親イメージを持たないイメージを、 ベース・イメージ と呼びます。

boot2docker

boot2docker (ブート・トゥ・ドッカー)は Docker コンテナの実行に特化した Linux ディストリビューションです。Mac 及び Windows 向けの boot2docker は、Docker Toolbox のインストールに含まれる docker-machine に置き換えられました。

btrfs

btrfs (B-tree file system;ビー・ツリー・ファイルシステム、バター・エフエス)は、Docker がストレージ用のバックエンドとしてサポートする Linux の ファイルシステム です。

ビルド(build)

ビルド(build)とは、 Dockerfile を使って Docker イメージを構築する方法です。構築時には Dockerfile と「コンテクスト」(内容物の意味)を使います。コンテクストとは、イメージ構築に必要なファイル群が置かれているディレクトリです。

cgroups

cgroups (control groups;コントロール・グループ)は Linux カーネルの機能であり、プロセスの集合が使うリソース(CPU、メモリ、ディスク I/O、ネットワーク等)を制限・計算・隔離します。Docker はリソース上限の管理と隔離に cgroups を使います。

cgroups の別名:control groups

Compose

Compose (コンポーズ)は、Docker で複雑なアプリケーションの実行と定義をするツールです。Compose を使えば、1つのファイルに複数のコンテナ・アプリケーションを定義しておき、コマンドを1つ実行するだけで、アプリケーションを使うために必要な全てを実行します。

Compose の別名: docker-compose、fig

コンテナ

コンテナ(container)は docker イメージ を実行するときの実体(runtime instance)です。

Docker コンテナには、次のものを含みます。

  • Docker イメージ
  • 実行環境
  • 命令の標準セット

Docker コンテナの概念は、輸送用のコンテナから拝借したものです。コンテナは物を世界的に輸送するために標準が定義されています。Docker はソフトウェアを送るための標準を定義しています。

データ・ボリューム

データ・ボリューム(data volume)は、コンテナ内部でユニオン・ファイル・システムを迂回するため特別に設計されたディレクトリです。データ・ボリュームは長期的なデータ保管のために設計されており、コンテナのライフサイクルからは独立しています。そのため、コンテナを削除してもボリュームが自動的に消されることは有り得ませんし、コンテナから参照されなくなったボリュームが「掃除」(garbage collect)されることもありません。

Docker

Docker (ドッカー)には次の意味があります。

  • Docker プロジェクト全体を指す言葉であり、開発者やシステム管理者がアプリケーションを開発・移動・実行するためのプラットフォームです。
  • ホスト上で動く docker デーモンプロセスであり、イメージとコンテナを管理します。

Docker Hub

Docker Hub (ドッカー・ハブ)は Docker とこのコンポーネントで動くリソースを集めた場所です。以下のサービスを提供します。

  • Docker イメージを預かる(ホスティング)
  • ユーザ認証
  • イメージの自動構築と、構築トリガ(build triggers)やウェブ・フック(web hooks)のようなワークフロー・ツール
  • GitHub 及び Bitbucket との統合

Dockerfile

Dockerfile(ドッカーファイル)はテキスト形式のドキュメントであり、通常 Docker イメージを構築するために手動で実行が必要になる全てのコマンドを含みます。Docker は Dockerfile の命令を読み込み、自動的にイメージを構築します。

ファイルシステム

ファイルシステムとは、オペレーティング・システムがファイルに名前を付け、かつ、効率的な保管と修正のためにファイルに場所を割り当てます。

例:

  • Linux : ext4, aufs, btrfs, zfs
  • Windows : NTFS
  • OS X : HFS+

イメージ

Docker イメージは コンテナ の元です。イメージとはルート・ファイルシステムに対する変更を並べ集めたもので、コンテナを実行する間に使われる実行パラメータに相当します。典型的なイメージはユニオン・ファイル・システムの層(スタック)がお互いに積み重なっています。イメージは状態を保持せず、変更もできません。

libcontainer

libcontainer(リブコンテナ)は Go 言語のネイティブな実装であり、名前空間・cgroup・機能・ファイルシステムへのアクセス管理を持つコンテナを作成します。コンテナを作成後、コンテナに対してライフサイクル上の追加操作を可能にします。

libnetwork

libnetwork(リブネットワーク)は Go 言語のネイティブな実装であり、コンテナのネットワーク名前空間や他のネットワーク・リソースを作成・管理します。コンテナを作成後、コンテナに対してライフサイクル上の追加操作を可能にします。

Machine

Machine (マシン)は Docker ホストを簡単に作成できるようにするツールであり、クラウド・プロバイダ上やデータセンタでも利用できます。Machine はサーバを作成し、そこに Docker をインストールし、Docker クライアントで通信できるように設定します。

別名: docker-machine

オーバレイ・ネットワーク・ドライバ

オーバレイ・ネットワーク・ドライバ(overlay network driver)は、クラスタ上の Docker コンテナに対して、複数ホスト間のネットワーク接続性を簡単に提供します。

オーバレイ・ストレージ・ドライバ

OverlayFS は、他のファイルシステムに対する ユニオン・マウント を Linux に実装するもので、 ファイルシステム 向けのサービスです。

レジストリ(registry)

レジストリ(registry)とは イメージ を持つ リポジトリ を預かるサービス(ホステッド・サービス)であり、レジストリ API に応答します。

デフォルトのレジストリにアクセスするには、ブラウザで Docker Hub を開くか、 docker search コマンドを使います。

リポジトリ(repository)

リポジトリ(repository)とは Docker イメージの集まりです。リポジトリは レジストリ サーバに送信すると、共有されるようにできます。リポジトリの中では、イメージの違いを タグ でラベル付けします。

共有 Nginx リポジトリタグ の例です。

Swarm

Swarm (スウォーム)は Docker 用のネイティブなクラスタリング・ツールです。Swarm は複数の Docker ホストを一緒にまとめ(プールする)、1つの仮想的な Docker ホストのように装います。Swarm は標準 Docker API を提供するため、既に Docker で使えるツールであれば、複数のホスト上で透過的にスケールさせることができます。

別名:docker-swarm

タグ

タグ(tag)は リポジトリ 上の Docker イメージに割り当てるラベルです。タグを使い、リポジトリ上のイメージを互いに識別します。

注釈

ここでのラベルとは、docker デーモン用のキー・バリューで設定するラベルとは関係がありません。

Toolbox

Docker Toolbox(ツールボックス)は Mac あるいは Windows ユーザ向けのインストーラです。

ユニオン・ファイル・システム

ユニオン・ファイル・システム(Union file system)や UnionFS は、非常に軽量で高速なレイヤを作成できるファイルシステムです。Docker はコンテナのブロック構築にユニオン・ファイル・システムを使います。

仮想マシン

仮想マシン(Virtual Machine)とは、コンピュータと疑似専用ハードウェアの全体をエミュレートするプログラムです。他のユーザと物理ハードウェアのリソースを共有しますが、オペレーティング・システムからは隔離されています。エンドユーザは専用ハードウェアと同じように仮想マシンを操作できます。

コンテナと比べると、仮想マシンの実行は重たいものですが、更なる隔離を提供し、自身でリソースを持っており、共有は最低限です。

別名:VM