Dockerを触ってみる#1

masakiが2015/01/09 18:47:48に投稿

Dockerを触ってみる#1

Dockerとは?

Dockerとは、Docker社が開発しているオープンソースのコンテナ型仮想化ソフトウェア。

特徴

  • Linuxコンテナ(LXC)を利用して実行環境を分割する。
  • パッケージングされたアプリケーションをインターネット上からダウンロードできる。
  • コンテナ毎に独立したプロセス群を持つ。
  • コンテナ毎に特定のディレクトリをルートディレクトリとする。(chrootのようなもの)
  • コンテナ毎に独立したネットワーク設定を持つ(らしい)。
  • コンテナ毎にcpu、メモリなどのリソースの制限ができる。

仮想マシン環境との違い

  • ハードウェアの仮想化を行わないためオーバヘッドが小さい。
  • 動作するカーネルは1つ。(異なるOSは動かせない。)
  • 起動が速い。

コンテナ実行例

コンテナ側

masaki@massachusetts:~$ sudo docker.io run -i -t  tutum/centos bash
                                            --  tutumが提供するcentosイメージでbashを動かす。
                                            -- -i : 標準入力を受け付ける
                                            -- -t : 仮想端末を使用
Unable to find image 'tutum/centos' locally                   -- ローカルに該当イメージがない場合はインターネット上から探す。
Pulling repository tutum/centos
7547e394081e: Download complete
511136ea3c5a: Download complete
5b12ef8fd570: Download complete
34943839435d: Download complete
619170452fbc: Download complete
8e59c47c7ac7: Download complete
765d0b386f56: Download complete
3d6d94007d84: Download complete
c9aedf420fb2: Download complete
412b366be226: Download complete
107e2713bee5: Download complete
2886f944094f: Download complete

bash-4.2# cat /etc/redhat-release                                                -- centosが動いているかの確認。
CentOS Linux release 7.0.1406 (Core)

bash-4.2# ps alx
F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
4     0     1     0  20   0  11744  1708 wait   Ss   ?          0:00 bash
0     0    15     1  20   0  17652  1036 -      R+   ?          0:00 ps alx
                                                                                        -- 動いているプロセスはこれだけ。

bash-4.2# chkconfig --list
bash-4.2#                                                                                           -- デーモンが動いていない。

bash-4.2# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  run.sh  sbin  selinux  set_root_pw.sh  srv  sys  tmp  usr  var
bash-4.2# ls /home
bash-4.2#
                                                                                                            -- centosのファイル構成。

ホスト側

masaki@massachusetts:~$ sudo docker.io ps                               -- 現在動作しているコンテナの確認。
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS               NAMES
9e0bbf92e340        tutum/centos:latest   bash                3 minutes ago       Up 3 minutes        22/tcp              determined_colden

masaki@massachusetts:~$ ls /                                                        -- ubuntuのファイル構成。
bin   dev  home        initrd.img.old  lib64       media  opt   root  sbin  sys  usr  vmlinuz
boot  etc  initrd.img  lib             lost+found  mnt    proc  run   srv   tmp  var  vmlinuz.old

あらためてDockerとは?

ホスト環境を汚さずに、専用にパッケージングされたアプリケーションを動かす仕組み。

使い道

どのディストリビューション上でも実行環境(ディストリビューション構成)を揃えられるので、特定のファイル構成で動作するシステムの開発時に便利そう。
(開発/テストメンバー全員に実行環境を配る時、納品時など)

積み残し、次回作業

次回は以下を確認したい。

  • ネットワーク設定。
  • コンテナ上でユーザを追加したらどうなるのか。
  • イメージを作成。