coreosとDocker


#参考情報
## Dokcer
http://www.infoq.com/jp/articles/docker-containers
http://n8.hatenablog.com/entry/2013/08/15/164643

## CoreOS
http://coreos.com/



```coreosのインストール
$ git clone https://github.com/coreos/coreos-vagrant/ coreos
$ cd coreos
$ vagrant up

$ vagrant list
ALL:
39c236d1-077d-4afe-a537-2aba6cdd160f: coreos-vagrant_default_1382366707 (Linux 2.6 (64 bit))
RUNNING:
39c236d1-077d-4afe-a537-2aba6cdd160f: coreos-vagrant_default_1382366707 (Linux 2.6 (64 bit))
```

```coreosへのログイン
$ vagrant ssh
Last login: Mon Oct 21 14:45:28 UTC 2013 from 10.0.2.2 on ssh
   ______                ____  _____
  / ____/___  ________  / __ \/ ___/
 / /   / __ \/ ___/ _ \/ / / /\__ \
/ /___/ /_/ / /  /  __/ /_/ /___/ /
\____/\____/_/   \___/\____//____/

core@localhost ~ $ uname -a
Linux localhost 3.10.10+ #1 SMP Tue Oct 15 01:37:23 UTC 2013 x86_64 Intel(R) Core(TM) i5-4250U CPU @ 1.30GHz GenuineIntel GNU/Linux
core@localhost ~ $ cat /etc/gentoo-release 
CoreOS release 106.0.0
core@localhost ~ $ ps axu | grep dock
root       430  0.0  0.7 273760  7824 ?        Ssl  14:45   0:00 /usr/bin/docker -d
core       656  0.0  0.0   4364   648 pts/0    S+   14:46   0:00 grep --colour=auto dock
```

###coreosにはDockerがインストールされている

```
core@localhost ~ $ sudo netstat -nlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:7001          0.0.0.0:*               LISTEN      383/etcd            
tcp        0      0 0.0.0.0:16385           0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::22                   :::*                    LISTEN      1/init              
tcp6       0      0 :::4001                 :::*                    LISTEN      383/etcd            
udp        0      0 0.0.0.0:8472            0.0.0.0:*                           -                   
raw6       0      0 :::58                   :::*                    7           347/dhcpcd          
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  2      [ ACC ]     STREAM     LISTENING     13862    347/dhcpcd           /var/run/dhcpcd.sock
unix  2      [ ACC ]     STREAM     LISTENING     9013     1/init               /run/systemd/private
unix  2      [ ACC ]     STREAM     LISTENING     9038     1/init               /run/systemd/journal/stdout
unix  2      [ ACC ]     STREAM     LISTENING     13669    1/init               /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     SEQPACKET  LISTENING     9325     1/init               /run/udev/control
unix  2      [ ACC ]     STREAM     LISTENING     14833    430/docker           /var/run/docker.sock
```

```dockerにbase(コンテナイメージ)をインストール
core@localhost ~ $ docker images
REPOSITORY          TAG                 ID                  CREATED             SIZE
core@localhost ~ $ docker pull base
Pulling repository base
b750fe79269d: Download complete
27cf78414709: Download complete
core@localhost ~ $ docker images
REPOSITORY          TAG                 ID                  CREATED             SIZE
base                latest              b750fe79269d        7 months ago        24.65 kB (virtual 180.1 MB)
base                ubuntu-12.10        b750fe79269d        7 months ago        24.65 kB (virtual 180.1 MB)
base                ubuntu-quantal      b750fe79269d        7 months ago        24.65 kB (virtual 180.1 MB)
base                ubuntu-quantl       b750fe79269d        7 months ago        24.65 kB (virtual 180.1 MB)
core@localhost ~ $ docker run base /bin/echo hello world
hello world
core@localhost ~ $ docker ps -a
ID                  IMAGE               COMMAND                CREATED             STATUS              PORTS
5885de2407f7        base:latest         /bin/echo hello worl   14 seconds ago      Exit 0                                  
core@localhost ~ $ docker rm 5885de2407f7
5885de2407f7
core@localhost ~ $ docker ps -a
ID                  IMAGE               COMMAND             CREATED             STATUS              PORTS
```

```コンテナにログイン
docker run -i -t base /bin/bash
2013/10/22 03:21:44 Error: Error starting container 2563f1146cab: fork/exec /usr/sbin/lxc-start: operation not permitted

***1回目は失敗する

core@localhost ~ $ docker run -i -t base /bin/bash

root@ef48665eb7a8:/# apt-get update
Ign http://archive.ubuntu.com quantal InRelease      
Hit http://archive.ubuntu.com quantal Release.gpg    
Hit http://archive.ubuntu.com quantal Release
Hit http://archive.ubuntu.com quantal/main amd64 Packages
Get:1 http://archive.ubuntu.com quantal/universe amd64 Packages [5274 kB]
Get:2 http://archive.ubuntu.com quantal/multiverse amd64 Packages [131 kB]                                                
Get:3 http://archive.ubuntu.com quantal/main Translation-en [660 kB]                                                      
Get:4 http://archive.ubuntu.com quantal/multiverse Translation-en [100 kB]                                                
Get:5 http://archive.ubuntu.com quantal/universe Translation-en [3648 kB]                                                 
Fetched 9813 kB in 21s (446 kB/s)                                                                                         
Reading package lists... Done

root@ef48665eb7a8:/# apt-get install nginx
Reading package lists... Done
Building dependency tree... Done
The following extra packages will be installed:
  geoip-database libfreetype6 libgcrypt11 libgd2-noxpm libgeoip1 libgpg-error0 libjpeg-turbo8 libjpeg8 libxml2 libxslt1.1
  nginx-common nginx-full sgml-base xml-core
Suggested packages:
  rng-tools libgd-tools geoip-bin sgml-base-doc debhelper
The following NEW packages will be installed:
  geoip-database libfreetype6 libgcrypt11 libgd2-noxpm libgeoip1 libgpg-error0 libjpeg-turbo8 libjpeg8 libxml2 libxslt1.1
  nginx nginx-common nginx-full sgml-base xml-core
0 upgraded, 15 newly installed, 0 to remove and 0 not upgraded.
Need to get 6044 kB of archives.
After this operation, 14.2 MB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 http://archive.ubuntu.com/ubuntu/ quantal/main libgpg-error0 amd64 1.10-3.1ubuntu1 [14.7 kB]
Get:2 http://archive.ubuntu.com/ubuntu/ quantal/main libgcrypt11 amd64 1.5.0-3ubuntu1 [279 kB]
Get:3 http://archive.ubuntu.com/ubuntu/ quantal/main libgeoip1 amd64 1.4.8+dfsg-4 [103 kB]
Get:4 http://archive.ubuntu.com/ubuntu/ quantal/main libfreetype6 amd64 2.4.10-0ubuntu1 [344 kB]
Get:5 http://archive.ubuntu.com/ubuntu/ quantal/main libjpeg-turbo8 amd64 1.2.1-0ubuntu2 [114 kB]                         
Get:6 http://archive.ubuntu.com/ubuntu/ quantal/main libxml2 amd64 2.8.0+dfsg1-5ubuntu2 [679 kB]                          
Get:7 http://archive.ubuntu.com/ubuntu/ quantal/main libxslt1.1 amd64 1.1.26-14 [168 kB]                                  
Get:8 http://archive.ubuntu.com/ubuntu/ quantal/main libjpeg8 amd64 8c-2ubuntu7 [2112 B]                                  
Get:9 http://archive.ubuntu.com/ubuntu/ quantal/main libgd2-noxpm amd64 2.0.36~rc1~dfsg-6ubuntu3 [201 kB]                 
Get:10 http://archive.ubuntu.com/ubuntu/ quantal/main geoip-database all 20120609-1 [3698 kB]                             
Get:11 http://archive.ubuntu.com/ubuntu/ quantal/universe nginx-common all 1.2.1-2.2 [18.7 kB]                            
Get:12 http://archive.ubuntu.com/ubuntu/ quantal/universe nginx-full amd64 1.2.1-2.2 [381 kB]                             
Get:13 http://archive.ubuntu.com/ubuntu/ quantal/universe nginx all 1.2.1-2.2 [7494 B]                                    
Get:14 http://archive.ubuntu.com/ubuntu/ quantal/main sgml-base all 1.26+nmu3ubuntu1 [11.5 kB]                            
Get:15 http://archive.ubuntu.com/ubuntu/ quantal/main xml-core all 0.13+nmu1 [23.0 kB]                                    
Fetched 6044 kB in 20s (298 kB/s)                                                                                         
Selecting previously unselected package libgpg-error0:amd64.
(Reading database ... 9893 files and directories currently installed.)
Unpacking libgpg-error0:amd64 (from .../libgpg-error0_1.10-3.1ubuntu1_amd64.deb) ...
Selecting previously unselected package libgcrypt11:amd64.
Unpacking libgcrypt11:amd64 (from .../libgcrypt11_1.5.0-3ubuntu1_amd64.deb) ...
Selecting previously unselected package libgeoip1:amd64.
Unpacking libgeoip1:amd64 (from .../libgeoip1_1.4.8+dfsg-4_amd64.deb) ...
Selecting previously unselected package libfreetype6:amd64.
Unpacking libfreetype6:amd64 (from .../libfreetype6_2.4.10-0ubuntu1_amd64.deb) ...
Selecting previously unselected package libjpeg-turbo8:amd64.
Unpacking libjpeg-turbo8:amd64 (from .../libjpeg-turbo8_1.2.1-0ubuntu2_amd64.deb) ...
Selecting previously unselected package libxml2:amd64.
Unpacking libxml2:amd64 (from .../libxml2_2.8.0+dfsg1-5ubuntu2_amd64.deb) ...
Selecting previously unselected package libxslt1.1:amd64.
Unpacking libxslt1.1:amd64 (from .../libxslt1.1_1.1.26-14_amd64.deb) ...
Selecting previously unselected package libjpeg8:amd64.
Unpacking libjpeg8:amd64 (from .../libjpeg8_8c-2ubuntu7_amd64.deb) ...
Selecting previously unselected package libgd2-noxpm:amd64.
Unpacking libgd2-noxpm:amd64 (from .../libgd2-noxpm_2.0.36~rc1~dfsg-6ubuntu3_amd64.deb) ...
Selecting previously unselected package geoip-database.
Unpacking geoip-database (from .../geoip-database_20120609-1_all.deb) ...
Selecting previously unselected package nginx-common.
Unpacking nginx-common (from .../nginx-common_1.2.1-2.2_all.deb) ...
Selecting previously unselected package nginx-full.
Unpacking nginx-full (from .../nginx-full_1.2.1-2.2_amd64.deb) ...
Selecting previously unselected package nginx.
Unpacking nginx (from .../nginx_1.2.1-2.2_all.deb) ...
Selecting previously unselected package sgml-base.
Unpacking sgml-base (from .../sgml-base_1.26+nmu3ubuntu1_all.deb) ...
Selecting previously unselected package xml-core.
Unpacking xml-core (from .../xml-core_0.13+nmu1_all.deb) ...
Processing triggers for ureadahead ...
Setting up libgpg-error0:amd64 (1.10-3.1ubuntu1) ...
Setting up libgcrypt11:amd64 (1.5.0-3ubuntu1) ...
Setting up libgeoip1:amd64 (1.4.8+dfsg-4) ...
Setting up libfreetype6:amd64 (2.4.10-0ubuntu1) ...
Setting up libjpeg-turbo8:amd64 (1.2.1-0ubuntu2) ...
Setting up libxml2:amd64 (2.8.0+dfsg1-5ubuntu2) ...
Setting up libxslt1.1:amd64 (1.1.26-14) ...
Setting up libjpeg8:amd64 (8c-2ubuntu7) ...
Setting up libgd2-noxpm:amd64 (2.0.36~rc1~dfsg-6ubuntu3) ...
Setting up geoip-database (20120609-1) ...
Setting up nginx-common (1.2.1-2.2) ...
Setting up sgml-base (1.26+nmu3ubuntu1) ...
Updating the super catalog...
Setting up xml-core (0.13+nmu1) ...
update-catalog: Suppressing action on super catalog. Invoking trigger instead.
update-catalog: Please rebuild the package being set up with a version of debhelper fixing #477751.
Processing triggers for ureadahead ...
Setting up nginx-full (1.2.1-2.2) ...
Setting up nginx (1.2.1-2.2) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
Processing triggers for sgml-base ...
Updating the super catalog...


nginxはデーモンなのでdockerで起動するとすぐ終了してしまうため、設定ファイルでデーモンを無効化

# cat /etc/nginx/nginx.conf 
user www-data;
worker_processes 4;
pid /var/run/nginx.pid;
daemon off;

```

```nginxをインストールしたコンテナをイメージ化
root@ef48665eb7a8:/# exit
exit

core@localhost ~ $ docker ps -a
ID                  IMAGE               COMMAND             CREATED              STATUS              PORTS
ef48665eb7a8        base:latest         /bin/bash           About a minute ago   Exit 0                                  
2563f1146cab        base:latest         /bin/bash           About a minute ago   Exit 0                                  

core@localhost ~ $ docker commit ef48665eb7a8 masanara/nginx
3c50e4a0b8fb

core@localhost ~ $ docker images
REPOSITORY          TAG                 ID                  CREATED             SIZE
masanara/nginx      latest              3c50e4a0b8fb        5 seconds ago       116.9 MB (virtual 297 MB)
base                latest              b750fe79269d        7 months ago        24.65 kB (virtual 180.1 MB)
base                ubuntu-12.10        b750fe79269d        7 months ago        24.65 kB (virtual 180.1 MB)
base                ubuntu-quantal      b750fe79269d        7 months ago        24.65 kB (virtual 180.1 MB)
base                ubuntu-quantl       b750fe79269d        7 months ago        24.65 kB (virtual 180.1 MB)
```

###イメージ化したnginxコンテナを起動
```
core@localhost ~ $ docker run -d -p 80 masanara/nginx /usr/sbin/nginx
c2b27f7b360c
core@localhost ~ $ docker run -d -p 80 masanara/nginx /usr/sbin/nginx
e7667fa45d8d
core@localhost ~ $ docker run -d -p 80 masanara/nginx /usr/sbin/nginx
a6dbdfa710bf
core@localhost ~ $ docker run -d -p 80 masanara/nginx /usr/sbin/nginx
52048301428c
core@localhost ~ $ docker ps 
ID                  IMAGE                   COMMAND             CREATED             STATUS              PORTS
52048301428c        masanara/nginx:latest   /usr/sbin/nginx     3 seconds ago       Up 3 seconds        49172->80           
a6dbdfa710bf        masanara/nginx:latest   /usr/sbin/nginx     4 seconds ago       Up 4 seconds        49171->80           
e7667fa45d8d        masanara/nginx:latest   /usr/sbin/nginx     5 seconds ago       Up 4 seconds        49170->80           
c2b27f7b360c        masanara/nginx:latest   /usr/sbin/nginx     6 seconds ago       Up 5 seconds        49169->80    

```