JPOUG Advent Calendar 2014 の16日目のエントリです。2回目でちゃいました。
前日は 佐々木潤 さんの 泥箱的なメモ - モデルをスケッチする でした。
今回は、Docker の話です。
最近流行の Docker ですが、当然ながら Oracle Linux でも使用できます。
そして、Oracle VM Server 上の Linux でも使用できます。
Oracle VM Server の Dom-0 でコンテナを起動したりするわけではなく、
Dom-U の Linux でコンテナを起動します。
結構前ですが、
Oracle Linux での Docker を紹介するブログポストがあったので
Oracle VM Server 上の Oracle Linux でためしてみました。
Wim Coekaerts Blog
Oracle Linux 6.5 and Docker
https://blogs.oracle.com/wim/entry/oracle_linux_6_5_and
今回の環境
Oracle Linux 6.5 64bit 版です。
※一応、Oracle VM Server 3.3.1 の Dom-U です。
[root@dksv01 ~]# cat /etc/oracle-release
Oracle Linux Server release 6.5
カーネルは UEK R3(Oracle Linux 6.5 のデフォルトのまま) です。
[root@dksv01 ~]# uname -r
3.8.13-16.2.1.el6uek.x86_64
Dockerの準備
まず、LXC をインストールしておきます。
※ちなみに、結構依存パッケージが多いです。
[root@dksv01 ~]# yum install lxc
cgroup ファイルシステムをマウントしておきます。
[root@dksv01 ~]# mkdir -p /cgroup
[root@dksv01 ~]# mount none -t cgroup /cgroup
[root@dksv01 ~]# mount | grep cgroup
none on /cgroup type cgroup (rw)
Dockerの最新バイナリを DL します。
最新の docker-1.4.1 だとエラーでコンテナ起動が出来なかったので、
今回は、ちょっと古めのバージョンを使用しています。
URL にある「docker-1.1.1」の数値を変更すると、そのバージョンの Docker が DL できます。
[root@dksv01 ~]# mkdir work
[root@dksv01 ~]# cd work/
[root@dksv01 work]# wget https://get.docker.com/builds/Linux/x86_64/docker-1.1.1 -O docker
ファイルに実行権限を付与。
[root@dksv01 work]# ls -lh docker
-rw-r--r-- 1 root root 17M 9月 11 05:20 2014 docker
[root@dksv01 work]# chmod 755 docker
[root@dksv01 work]# ls -lh docker
-rwxr-xr-x 1 root root 17M 9月 11 05:20 2014 docker
docker デーモンを起動します。
結構、標準出力はゴチャっとします。
[root@dksv01 work]# ./docker -d &
[1] 3076
[root@dksv01 work]# 2014/12/21 22:52:40 docker daemon: 1.1.1 bd609d2; execdriver: native; graphdriver:
[4de782dc] +job serveapi(unix:///var/run/docker.sock)
[4de782dc] +job initserver()
[4de782dc.initserver()] Creating server
2014/12/21 22:52:40 Listening for HTTP on unix (/var/run/docker.sock)
[4de782dc] +job init_networkdriver()
[4de782dc] -job init_networkdriver() = OK (0)
Loading containers: ........................: done.
[4de782dc.initserver()] Creating pidfile
[4de782dc.initserver()] Setting up signal traps
[4de782dc] -job initserver() = OK (0)
[4de782dc] +job acceptconnections()
[4de782dc] -job acceptconnections() = OK (0)
docker のバージョンです。
[root@dksv01 work]# ./docker version
Client version: 1.1.1
Client API version: 1.13
Go version (client): go1.2.1
Git commit (client): bd609d2
2014/12/21 22:53:22 GET /v1.13/version
[4de782dc] +job version()
[4de782dc] -job version() = OK (0)
Server version: 1.1.1
Server API version: 1.13
Go version (server): go1.2.1
Git commit (server): bd609d2
イメージ作成
ここだけ、最新版 docker を使用しているので、ちょっと実行結果が他と違うかもしれません。
イメージ作成のために、febootstrap をインストールします。
※これも、そこそこ依存 RPM があります。
[root@dksv01 work]# yum install febootstrap
イメージを /root/work/ol65_1 に作成します。
「-i」でいくつも指定しているのは、導入する RPM パッケージです。
SSH などを使用したいので、参考にしたブログよりいくつか RPM を増やしています。
ちなみに、末尾に指定しているのは YUM リポジトリですが、
ORACLE の パブリック YUM リポジトリから DL すると時間がかかるので
自宅内の YUM リポジトリを指定しています。
[root@dksv01 work]# febootstrap -i bash -i coreutils -i tar -i bzip2 -i gzip -i vim-minimal -i wget -i patch -i diffutils -i iproute -i yum -i passwd -i openssh-clients -i openssh-server ol65_1 /root/work/ol65_1 http://webfs1.gowatana.lab/os/ol605/
[root@dksv01 work]# ls -l
合計 14276
-rwxr-xr-x 1 root root 14614452 12月 17 05:20 2014 docker
dr-xr-xr-x 21 root root 4096 12月 21 22:00 2014 ol65_1
[root@dksv01 work]# du -sh *
14M docker
345M ol65_1
[root@dksv01 work]# ls ./ol65_1
bin dev home lib64 mnt proc sbin srv tmp var
boot etc lib media opt root selinux sys usr
/etc/resolv.conf と /sbin/init を作成しておきます。
[root@dksv01 work]# touch ./ol65_1/etc/resolv.conf
[root@dksv01 work]# touch ./ol65_1/sbin/init
イメージを tar でまとめてから・・・
[root@dksv01 work]# tar --numeric-owner -jcpf ol65_1.tar.bz2 -C ./ol65_1 .
[root@dksv01 work]# ls -lh
合計 114M
-rwxr-xr-x 1 root root 14M 12月 17 05:20 2014 docker
dr-xr-xr-x 21 root root 4.0K 12月 21 22:00 2014 ol65_1
-rw-r--r-- 1 root root 100M 12月 21 22:09 2014 ol65_1.tar.bz2
インポートします。
[root@dksv01 work]# cat ol65_1.tar.bz2 | ./docker import - ol65_1
INFO[1215] POST /v1.16/images/create?fromSrc=-&repo=ol65_1
INFO[1215] +job import(-, ol65_1, )
INFO[1274] +job log(import, 25ab466e3b5bd650af2e214ba76eae956fd2eba2bb8aee75fceb168f011816b8, )
INFO[1274] -job log(import, 25ab466e3b5bd650af2e214ba76eae956fd2eba2bb8aee75fceb168f011816b8, ) = OK (0)
INFO[1274] -job import(-, ol65_1, ) = OK (0)
25ab466e3b5bd650af2e214ba76eae956fd2eba2bb8aee75fceb168f011816b8
インポートされました。
[root@dksv01 work]# ./docker images
INFO[1372] GET /v1.16/images/json
INFO[1372] +job images()
INFO[1372] -job images() = OK (0)
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ol65_1 latest 25ab466e3b5b 2 minutes ago 329.8 MB
コンテナの起動~停止
Docker のコンテナを起動してみます。
Docker 的には微妙かもしれませんが、bash を・・・
[root@dksv01 work]# ./docker run -i -t ol65_1 /bin/bash
2014/12/21 22:54:14 POST /v1.13/containers/create
[4de782dc] +job create()
[4de782dc] -job create() = OK (0)
2014/12/21 22:54:14 POST /v1.13/containers/5f8a024bb34fcab6811750ef3ba6bcb45c0dec22ff5b942b6270a7c24e395824/attach?stderr=1&stdin=1&stdout=1&stream=1
(中略)
bash-4.1# ★ここからコンテナの中。
bash-4.1# cat /etc/oracle-release
Oracle Linux Server release 6.5
bash-4.1# uname -n
5f8a024bb34f
bash-4.1# uname -r
3.8.13-16.2.1.el6uek.x86_64
コンテナから抜けてみます。
「Ctrl + p + q」キーで、下記のような感じで、親の OS に戻れます。
キーを押した瞬間、こんな感じに・・・
bash-4.1# [4de782dc] -job attach(7a8693246bd7ce54605ec6fb9a8cbf0762eb3de7d4937e9a1690592d8c29ec5e) = OK (0)
2014/12/21 22:56:18 GET /v1.13/containers/7a8693246bd7ce54605ec6fb9a8cbf0762eb3de7d4937e9a1690592d8c29ec5e/json
[4de782dc] +job container_inspect(7a8693246bd7ce54605ec6fb9a8cbf0762eb3de7d4937e9a1690592d8c29ec5e)
[4de782dc] -job container_inspect(7a8693246bd7ce54605ec6fb9a8cbf0762eb3de7d4937e9a1690592d8c29ec5e) = OK (0)
[root@dksv01 work]# ★抜けた。
そして起動しているコンテナを確認することもできます。
[root@dksv01 work]# ./docker ps
2014/12/21 22:57:28 GET /v1.13/containers/json
[4de782dc] +job containers()
[4de782dc] -job containers() = OK (0)
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7a8693246bd7 ol65_1:latest /bin/bash About a minute ago Up About a minute sharp_curie
[root@dksv01 work]#
コンテナに再アタッチしてみます。
[root@dksv01 work]# ./docker attach 7a8693246bd7
2014/12/21 22:58:11 GET /v1.13/containers/7a8693246bd7/json
[4de782dc] +job container_inspect(7a8693246bd7)
[4de782dc] -job container_inspect(7a8693246bd7) = OK (0)
2014/12/21 22:58:11 POST /v1.13/containers/7a8693246bd7/resize?h=24&w=133
[4de782dc] +job resize(7a8693246bd7, 24, 133)
[4de782dc] -job resize(7a8693246bd7, 24, 133) = OK (0)
2014/12/21 22:58:11 POST /v1.13/containers/7a8693246bd7/attach?stderr=1&stdin=1&stdout=1&stream=1
[4de782dc] +job container_inspect(7a8693246bd7)
[4de782dc] -job container_inspect(7a8693246bd7) = OK (0)
[4de782dc] +job attach(7a8693246bd7)
bash-4.1# ★コンテナの中。
コンテナにアタッチした状態で、
「exit」もしくは「Ctrl + d」キーでコンテナ自体が停止します。
bash-4.1#
bash-4.1# exit[4de782dc] +job release_interface(7a8693246bd7ce54605ec6fb9a8cbf0762eb3de7d4937e9a1690592d8c29ec5e)
[4de782dc] -job release_interface(7a8693246bd7ce54605ec6fb9a8cbf0762eb3de7d4937e9a1690592d8c29ec5e) = OK (0)
[error] container.go:513 7a8693246bd7ce54605ec6fb9a8cbf0762eb3de7d4937e9a1690592d8c29ec5e: Error closing terminal: invalid argument
[4de782dc] -job attach(7a8693246bd7) = OK (0)
2014/12/21 22:58:31 GET /v1.13/containers/7a8693246bd7/json
[4de782dc] +job container_inspect(7a8693246bd7)
[4de782dc] -job container_inspect(7a8693246bd7) = OK (0)
[root@dksv01 work]# ★終了した。
[root@dksv01 work]# ./docker ps
2014/12/21 23:00:41 GET /v1.13/containers/json
[4de782dc] +job containers()
[4de782dc] -job containers() = OK (0)
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@dksv01 work]# ★↑起動しているイメージなし。
・・・という感じです。
bash でコンテナを起動すると Solaris Zone っぽい感じですが、
コマンドや httpd みたいなもので起動すると、ちょっと違う印象を受けるかもしれません。
ちなみに、ORACLE の提供している Docker イメージもあったりします。
http://public-yum.oracle.com/docker-images/OracleLinux/
以上、Oracle VM Server と Oracle Linux と Docker についてでした。
17日目は、discus_hamburg さんの
Mac De Oracle: 机上SQLチューニング、クイズ! 駆動表(外部表)はどれだ!!!!
です。
0 件のコメント:
コメントを投稿