そういうことだったんですね

いろいろ調べたり学んだりしたことを忘れないように書き連ねています

Docker - 手軽に使えそうな仮想環境を試してみた


Docker は Linux上で動作するコンテナー型と呼ばれる仮想化ソフトウェア。
ハイパーバイザー型に比べて、OS起動時のオーバーヘッドが少なくとても早い。

いまさら聞けないDocker入門(1):アプリ開発者もインフラ管理者も知っておきたいDockerの基礎知識 - @IT

用語の整理

  • Dockerレジストリ: Dockerイメージの格納場所。Docker Hub Registry
  • Dockerイメージ : Docker コンテナーの元となるイメージ。クリーンなOSなどを用意。Pre-build なものは Docker Hub Registry においてある
  • Dockerコンテナー: Dockerイメージ(ローカルキャッシュ)をコピーして起動される仮想環境
  • ローカルキャッシュ: docker pull の際にダウンロードしたDockerイメージ。

インストール・起動・設定

今回は CentOS-6.5 上で実行。
yumの EPELリポジトリ にはいている。

CentOS - Docker Documentation

$ sudo yum install docker-io -y
$ sudo /sbin/service docker start
$ sudo gpasswd -a <user> docker
$ docker info
Containers: 0
Images: 0
Storage Driver: devicemapper
 Pool Name: docker-253:0-1967542-pool
 Data file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata
 Data Space Used: 291.5 Mb
 Data Space Total: 102400.0 Mb
 Metadata Space Used: 0.7 Mb
 Metadata Space Total: 2048.0 Mb
Execution Driver: native-0.20
Kernel Version: 2.6.32-431.20.3.el6.x86_64

docker グループに追加しているのはsudoせずに実行できるようにするため。

centos7 のベースイメージをダウンロード

Docker Hub Registry - Repositories of Docker Images から Pre-build image をダウンロードできる。
今回は centos7 をインストール。

$ docker pull centos:centos7

centos:centos7 は (ユーザ名/)イメージ名:タグ名。githubと同じ。

docker コンテナを起動

コンテナ名を centos7_test としている。
今後の操作に必要となる。

$ docker run -it --name centos7_test centos:centos7 /bin/bash
bash-4.2# cat /etc/redhat-release
CentOS Linux release 7.0.1406 (Core)

OS の起動がないのですごい速い・・・。

Ruby を入れてみた。ダウンロードの時間はともかくインストールはすぐ終わる。

bash-4.2# yum install ruby -y
((いろいろ))
bash-4.2# ruby --version
ruby 2.0.0p353 (2013-11-22) [x86_64-linux]

Ctrl-d か、exit で抜けられます。コンテナは自動停止する。

bash-4.2# exit

停止中のコンテナを起動する

$ docker start -i centos7_test
$ docker attach centos7_test
bash-4.2#

docker コンテナ一覧の表示

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED            STATUS                       PORTS               NAMES
896d0972763b        centos:centos7      /bin/bash           7 seconds ago      Exited (127) 2 seconds ago                       centos7_test

コンテナを削除する

$ docker rm centos7_test

手軽にできるので余計な手を煩わせず開発に集中できそう。