ページ

2014年10月11日土曜日

Dockerをさわってみる 1 - インストール -

何かと目にする「Docker」をさわってみました。

Linux上でしか動かないという事なので、CentOS 6.5で実行してみる。
ちなみに、
コンテナ型仮想化とは・・・
ゲスト OS をホスト OS のカーネル内で分離する技術をいう、と思う。 ハイパーバイザ型仮想化に比べると一般に仮想化に必要なオーバーヘッドが少ないのがメリットとされている。 ただし、ホスト OS とゲスト OS がカーネルを共有するため、幾ら内部的に分離されているとはいえカーネルモジュールを使ったりするような一部の機能とは相性がよろしくない。
らしい。

早速CentOSにDockerをインストール。

DockerはEPELからインストールするらしい。

[root@localhost ~]# yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
epel/metalink                                             | 5.7 kB     00:00  
 * base: mirror.fairway.ne.jp
 * epel: ftp.yzu.edu.tw
 * extras: mirror.fairway.ne.jp
 * rpmfusion-free-updates: mirrors.ustc.edu.cn
 * rpmfusion-nonfree-updates: mirrors.ustc.edu.cn
 * updates: ftp.nara.wide.ad.jp
base                                                      | 3.7 kB     00:00  
epel                                                      | 4.4 kB     00:00  
epel/primary_db                                           | 6.3 MB     00:11  
extras                                                    | 3.3 kB     00:00  
rpmfusion-free-updates                                    | 2.7 kB     00:00  
rpmfusion-nonfree-updates                                 | 2.2 kB     00:00  
updates                                                   | 3.4 kB     00:00  
updates/primary_db                                        | 5.4 MB     00:05  
Setting up Install Process
epel-release-6-8.noarch.rpm                               |  14 kB     00:00  
Examining /var/tmp/yum-root-tT_1o2/epel-release-6-8.noarch.rpm: epel-release-6-8.noarch
/var/tmp/yum-root-tT_1o2/epel-release-6-8.noarch.rpm: does not update installed package.
Error: Nothing to do
[root@localhost ~]# yum -y install docker-io
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: mirror.fairway.ne.jp
 * epel: ftp.yzu.edu.tw
 * extras: mirror.fairway.ne.jp
 * rpmfusion-free-updates: mirrors.ustc.edu.cn
 * rpmfusion-nonfree-updates: mirrors.ustc.edu.cn
 * updates: ftp.nara.wide.ad.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package docker-io.x86_64 0:1.1.2-1.el6 will be installed
--> Processing Dependency: lxc for package: docker-io-1.1.2-1.el6.x86_64
--> Processing Dependency: libcgroup for package: docker-io-1.1.2-1.el6.x86_64
--> Running transaction check
---> Package libcgroup.x86_64 0:0.40.rc1-6.el6_5.1 will be installed
---> Package lxc.x86_64 0:1.0.5-5.el6 will be installed
--> Processing Dependency: lua-lxc(x86-64) = 1.0.5-5.el6 for package: lxc-1.0.5-5.el6.x86_64
--> Processing Dependency: lua-alt-getopt for package: lxc-1.0.5-5.el6.x86_64
--> Processing Dependency: liblxc.so.1()(64bit) for package: lxc-1.0.5-5.el6.x86_64
--> Running transaction check
---> Package lua-alt-getopt.noarch 0:0.7.0-1.el6 will be installed
---> Package lua-lxc.x86_64 0:1.0.5-5.el6 will be installed
--> Processing Dependency: lua-filesystem for package: lua-lxc-1.0.5-5.el6.x86_64
---> Package lxc-libs.x86_64 0:1.0.5-5.el6 will be installed
--> Running transaction check
---> Package lua-filesystem.x86_64 0:1.4.2-1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=================================================================================
 Package              Arch         Version                   Repository     Size
=================================================================================
Installing:
 docker-io            x86_64       1.1.2-1.el6               epel          4.5 M
Installing for dependencies:
 libcgroup            x86_64       0.40.rc1-6.el6_5.1        updates       126 k
 lua-alt-getopt       noarch       0.7.0-1.el6               epel          6.9 k
 lua-filesystem       x86_64       1.4.2-1.el6               epel           24 k
 lua-lxc              x86_64       1.0.5-5.el6               epel           15 k
 lxc                  x86_64       1.0.5-5.el6               epel          119 k
 lxc-libs             x86_64       1.0.5-5.el6               epel          244 k

Transaction Summary
=================================================================================
Install       7 Package(s)

Total download size: 5.1 M
Installed size: 25 M
Downloading Packages:
(1/7): docker-io-1.1.2-1.el6.x86_64.rpm                   | 4.5 MB     00:22  
(2/7): libcgroup-0.40.rc1-6.el6_5.1.x86_64.rpm            | 126 kB     00:00  
(3/7): lua-alt-getopt-0.7.0-1.el6.noarch.rpm              | 6.9 kB     00:00  
(4/7): lua-filesystem-1.4.2-1.el6.x86_64.rpm              |  24 kB     00:00  
(5/7): lua-lxc-1.0.5-5.el6.x86_64.rpm                     |  15 kB     00:00  
(6/7): lxc-1.0.5-5.el6.x86_64.rpm                         | 119 kB     00:00  
(7/7): lxc-libs-1.0.5-5.el6.x86_64.rpm                    | 244 kB     00:01  
---------------------------------------------------------------------------------
Total                                            181 kB/s | 5.1 MB     00:28  
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : lxc-libs-1.0.5-5.el6.x86_64                                   1/7
  Installing : lua-filesystem-1.4.2-1.el6.x86_64                             2/7
  Installing : lua-lxc-1.0.5-5.el6.x86_64                                    3/7
  Installing : libcgroup-0.40.rc1-6.el6_5.1.x86_64                           4/7
  Installing : lua-alt-getopt-0.7.0-1.el6.noarch                             5/7
  Installing : lxc-1.0.5-5.el6.x86_64                                        6/7
  Installing : docker-io-1.1.2-1.el6.x86_64                                  7/7
  Verifying  : docker-io-1.1.2-1.el6.x86_64                                  1/7
  Verifying  : lua-lxc-1.0.5-5.el6.x86_64                                    2/7
  Verifying  : lxc-1.0.5-5.el6.x86_64                                        3/7
  Verifying  : lua-alt-getopt-0.7.0-1.el6.noarch                             4/7
  Verifying  : lxc-libs-1.0.5-5.el6.x86_64                                   5/7
  Verifying  : libcgroup-0.40.rc1-6.el6_5.1.x86_64                           6/7
  Verifying  : lua-filesystem-1.4.2-1.el6.x86_64                             7/7

Installed:
  docker-io.x86_64 0:1.1.2-1.el6                                              

Dependency Installed:
  libcgroup.x86_64 0:0.40.rc1-6.el6_5.1    lua-alt-getopt.noarch 0:0.7.0-1.el6
  lua-filesystem.x86_64 0:1.4.2-1.el6      lua-lxc.x86_64 0:1.0.5-5.el6        
  lxc.x86_64 0:1.0.5-5.el6                 lxc-libs.x86_64 0:1.0.5-5.el6      

Complete!
[root@localhost ~]# service docker start
Starting cgconfig service:                                 [  OK  ]
Starting docker:                                   [  OK  ]
[root@localhost ~]# chkconfig docker on
[root@localhost ~]#

無事インストール完了!!

基本的な使い方

1. Docker index(共有リポジトリみたいなもん)からimageをpull
2. pullしたimageを実行(run)
3. imageをカスタマイズ
4. カスタマイズしたimageをcommit(ローカル)
5. カスタマイズしたimageをDocker indexにpush(共有リポジトリ)
6. 他PCからDocker indexにpushしたカスタマイズimageをpullして使用する事ができる

これだけみるとGitに似てる・・・

まずは、Docker index内のimageを検索してみる。
例) Ubuntuを検索
 > docker search ubuntu
























たくさんhit^^
次にUbuntuをローカルにpullしてみる。
ちょっと時間がかかりましたが、pullが完了しました。
























ちゃんとimageがpullできたか確認
 > docker images

imageの詳細をみるには
 > docker inspect [TAG or ID]

不要なimageを削除するには
 > docker rmi [TAG or ID]

pullしたimageを使ってコンテナの作成

コンテナを作成し、そのままコマンドを実行する。
例)
 > docker run ubuntu echo “hello world”

実行してみると↓こんなエラーがっ!!
[root@localhost ~]# docker run ubuntu echo "Hello"
2014/10/10 19:17:52 Error response from daemon: Cannot start container 1a763badc2ca55ab76c9abf3a3f4e0413253a6acd81cdc79170bd5929932506d: unable to remount sys readonly: unable to mount sys as readonly max retries reached

なんじゃこら〜!!!!
マウントできないとのお叱りをうけましたorz

↓以下サイトを参考にして/etc/sysconfig/dockerを修正

[root@localhost ~]# diff /etc/sysconfig/docker /etc/sysconfig/docker.org
7c7
< other_args="--exec-driver=lxc --selinux-enabled"
---
> other_args=""

いざ、実行!!
[root@localhost ~]# docker run ubuntu echo "Hello"
lxc-start: Device or resource busy - failed to set memory.use_hierarchy to 1; continuing
Hello

ん〜、実行できたがなんかfailedが出ているorz
実行したコンテナ一覧を見てみると・・・
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS                      PORTS               NAMES
eedab5d5ff07        ubuntu:14.04        echo Hello           17 seconds ago      Exited (0) 16 seconds ago                       high_colden         

Exited(0)で終了している。
とりあえず、コンテナを削除し、リセット
[root@localhost ~]# docker rm eedab5d5ff07
eedab5d5ff07
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

もう一度やってみる。
同じでしたorz 解決はまた今度^^;



0 件のコメント:

コメントを投稿