LoginSignup
8
8

More than 5 years have passed since last update.

Docker事始め

Last updated at Posted at 2014-06-16

2014.6.9-10にサンフランシスコで開催されたdockercon14でDocker 1.0のリリースが発表されました。
開発版である0.x系から話題になっていましたが、ほとんどウォッチできていなかったため備忘録目的で記録します。

Dockerとは

  • Linux上に独立した別のLinuxを起動することができるコンテナ型仮想化ソフトウェアの一つ
  • Go言語
  • Linuxカーネルの機能を利用し、Linux向けファイルシステムに依存
    • Linux Namespaces
    • Linux cgroups
    • AUFS
    • Device Mapper Thin Provisioning
    • iptables
  • Linuxカーネルの機能を利用/Linux向けファイルシステムに依存するため、Linuxでのみ動作
  • Apache LIcense 2.0

※上記カーネルの機能とファイルシステムを利用してOSレベルでの仮想化を実現しています。
 cgroupsといったLinuxカーネルの比較的新しい機能を使うため対応しているディストリビューションとバージョンに注意が必要です。

試してみる

何はともあれ試してみましょう。
Docker公式サイトにinstall手順が公開されているので、そちらを参考にします。
※EPELリポジトリのDockerバージョンはまだ0.11.1ですが…

今回の構成

# cat /etc/issue
 CentOS release 6.5 (Final)
# uname -rm
 2.6.32-431.17.1.el6.x86_64 x86_64

手順

# cd /usr/local/src/ 
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh ./epel-release-6-8.noarch.rpm
# yum info docker-io
Available Packages
Name        : docker-io
Arch        : x86_64
Version     : 0.11.1
Release     : 4.el6
Size        : 4.4 M
Repo        : epel
Summary     : Automates deployment of containerized applications
URL         : http://www.docker.io
License     : ASL 2.0
Description : Docker is an open-source engine that automates the deployment of any
            : application as a lightweight, portable, self-sufficient container that will
            : run virtually anywhere.
            : 
            : Docker containers can encapsulate any payload, and will run consistently on
            : and between virtually any server. The same container that a developer builds
            : and tests on a laptop will run at scale, in production*, on VMs, bare-metal
            : servers, OpenStack clusters, public instances, or combinations of the above.
# yum install -y docker-io
# service docker start
Starting cgconfig service:                                 [  OK  ]
Starting docker:                                           [  OK  ]
# chkconfig --list docker
docker          0:off   1:off   2:on    3:on    4:on    5:on    6:off
# docker pull centos:latest
Pulling repository centos
0c752394b855: Downloading [==================================================>] 43.23 MB/43.23 MB
0c752394b855: Download complete
34e94e67e63a: Download complete
34e94e67e63a: Pulling metadata
# docker images centos
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              latest              0c752394b855        5 days ago          124.1 MB
# docker run -i -t centos /bin/bash
bash-4.1#
bash-4.1# ifconfig
eth0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx:xx:xx
          inet addr:172.17.0.2  Bcast:0.0.0.0  Mask:255.255.0.0
          ...
bash-4.1# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys  tmp  usr  var
bash-4.1# touch hoge.txt
bash-4.1# ls
bin  dev  etc  hoge.txt  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys  tmp  usr  var
bash-4.1# exit
# docker run -i -t centos /bin/bash
bash-4.1#
bash-4.1# ifconfig
eth0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx:xx:xx
          inet addr:172.17.0.2  Bcast:0.0.0.0  Mask:255.255.0.0
          ...
bash-4.1# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys  tmp  usr  var
bash-4.1# exit

runで起動したコンテナにhoge.txtを作成した後にログアウト、再度runしてlsを実行するとIPアドレスは同じですがhoge.txtが存在しません。
runするたびに別コンテナが作成されているイメージでしょうか?
docker psコマンドでコンテナを確認できるみたいなので確認してみます。

# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
dbf78a9f8038        centos:latest       /bin/bash           49 seconds ago      Exited (0) 1 seconds ago                        kickass_babbage
4622e26ea152        centos:latest       /bin/bash           18 minutes ago      Exited (0) 7 minutes ago                        furious_wilson

コンテナはdocker rmコマンドで削除可能のようです。

# docker rm 4622e26ea152
4622e26ea152
# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
dbf78a9f8038        centos:latest       /bin/bash           49 seconds ago      Exited (0) 1 seconds ago                        kickass_babbage

試してみて

dockerのインストールとコンテナの起動/停止まで試してみました。
ハイパーバイザー型の仮想化と比べて気軽に環境が作れるのが魅力でしょうか。
コンテナ側のIPアドレスは別セグメントで払い出されているようなので、ホストOSとコンテナの通信はNATするようなイメージなんでしょうか?
次回はこの辺について追っていきたいと思います。

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8