何かと目にする「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 件のコメント:
コメントを投稿