alfort's Blog

Linuxエンジニアのメモ

Dockerを使ってみる

Docker に関していろいろ触ってみたのでそのメモ。

Docker とは

Docker 仮想化技術の一つであり、コンテナ型の仮想化を行う。
VMware Player とか、VirtualBoxのような仮想化はホスト型
Hyper-VとかXenServer という仮想化はハイパーバイザ型
まぁ色々あるなかでも、用途に合わせて使っていきましょうという話。

Docker を使うメリット

ホスト型の仮想化に比べると低コストでしょぼいノートPC上でもサクサク高速に、全体として使うディスクの容量もかなり抑えて使うことが出来る。

Docker を使うデメリット

あんまり思いつかない。
ただ、ホスト型の場合はカーネルを全く共有していないのにくらべ、コンテナ型ではホストOSのカーネルを利用して動く。
だから、$ :(){:|:&};:とかをコンテナ上でやるとホストOSごと死ぬ…というぐらい?

Docker のインストールとか簡単な実験

Macの場合のインストール

Homebrewがインストールされているならば、ターミナル上で以下のコマンドをいれる。

brew cask install docker

Hello Docker !

まずはDocker で実際にコマンドを打ってみる。 以下のようなコマンドを打ってみる。

$ docker run -it centos echo "Hello World"
Hello World

Hello World が表示されるはず。
打ち込んだコマンドの意味は、 CentOSのイメージ上で echo “Hello World"してということみたいです。
また、一回目の場合にはイメージをダウンロードするために時間がかかる。
二回目以降はイメージがダウンロード済みなのですぐに出来るはず。

今度はbashを起動してみる。

$ docker run -it centos bash
[root@16ecd6c1d371 /]#

上のような画面になり、CentOS上のシェルが起動する。

一回bash を終了して、もう一回同じコマンドを実行してみる。

$ docker run -it centos bash
[root@ec1299eb2927 /]#

今度も同じCentOS上のbashが起動されるが、マシン名が異なっている。
VirtualBoxとかでも一つのisoファイルから複数の仮想マシンを作ることが出来るように、
Dockerでも同じCentOSのイメージから複数の仮想マシン(コンテナ)を作る。
だから、最初にbashを使ったマシンと、二回目のbashを使ったマシンは別のマシンになる。

こうして使っていったコンテナを表示するには以下のようにする。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS               NAMES
ec1299eb2927        centos              "bash"                   15 minutes ago      Exited (0) 12 seconds ago                          unruffled_volhard
16ecd6c1d371        centos              "bash"                   16 minutes ago      Exited (130) 15 minutes ago                        jovial_bhabha

コンテナの情報が出てくる。
もしも以前使ったコンテナをもう一度使いたいとかあれば、以下のように打てばいい。

$ docker start ec1299eb2927; docker attach ec1299eb2927
ec1299eb2927
[root@ec1299eb2927 /]#

ec1299eb2927 とか書いているけれど、これはdocker ps -aした時のCONTAINER IDのことである。
意味のないハッシュ値だと打ちにくいので、CONTAINER IDの代わりに、NAMESを使うことも出来る。
どうでもいいけど、NAMESにある人でググったりすると面白い。