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
にある人でググったりすると面白い。