Docker は Linux のコンテナと呼ばれる技術を使い、物理サーバ上に複数の独立した環境を構築することができるソフトウェアです。
よく VMware や Hyper-V などの仮想化技術と比較されます。
「仮想化」・「コンテナ」と呼び方が異なるのは仕組みが異なるからで、大きく異なる点を下記にまとめてみました。
- 仮想化
- 代表製品
VMware や Hyper-V, VirtualBox など。 - 環境
土台(ホストOSやハイパーバイザー)の上に、OSごとまるまる載せる。
(P2V など物理環境を仮想環境へ移行できるツールが存在するのもそのため)。
- 代表製品
- コンテナ
- 代表製品
Docker や OpenVZ, LXC(Linux Containers)。 - 環境
土台(Linux)の上に、差分を載せる。
(土台と載せる環境との差分で管理することで軽量化)。
- 代表製品
なお、ともに物理サーバ上に複数の環境を構築できる点では同じです。
Docker 導入
Docker には rpm パッケージも用意されていますが、アップデート際に毎回ダウンロードが必要になります。
下記、公式アナウンス通りリポジトリの追加がおすすめです。
※Docker 環境が既にインストールされていたら事前に削除します。
base on CentOS 用 Docker CE の入手 — Docker-docs-ja 17.06.Beta ドキュメント
# 必要なパッケージをインストール $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # stable (安定版)リポジトリをセットアップ $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # yum パッケージ・インデックスを更新 $ sudo yum makecache fast # 最新バージョンをインストール $ sudo yum install docker-ce # Docker を起動 $ sudo systemctl start docker # docker が正しくインストールされているのを確認 $ sudo docker run hello-world # テスト用イメージ hello-world をダウンロードし、コンテナ内で実行します。 # コンテナを実行したら、情報を表示したあと終了します。
イメージからコンテナ作成
Ubuntu のイメージからコンテナを作成してみます。
(hello-world イメージ同様に docker run します)。
# docker run -it ubuntu bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
6cf436f81810: Pull complete
987088a85b96: Pull complete
b4624b3efe06: Pull complete
d42beb8ded59: Pull complete
Digest: sha256:092483e3e1ad25fd9b3424ea99fb13b416746abab1796d52c569fd266db39cd4
Status: Downloaded newer image for ubuntu:latest
コンテナの一覧表示
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bdb3545a849d ubuntu "bash" 8 minutes ago Up 8 minutes sad_williams
11f40d1c84b4 hello-world "/hello" 9 minutes ago Exited (0) 9 minutes ago gifted_heyrovsky