2014年12月31日水曜日

ORACLE 公開の Oracle Linux 6.x Docker イメージを使う。

ORACLE から Docker イメージが公開されています。
Oracle Linux 6.x / 7.x があります。
http://public-yum.oracle.com/docker-images/OracleLinux/

前回は、ORACLE の Docker RPM をインストールしてみました。
今回は、引き続き、
Oracle Linux 6.6 にインストールした Docker で
Oracle Linux 6.6 のイメージを起動してみます。

イメージのダウンロード

ホスト側の OS にて、wget コマンドでイメージをダウンロードします。
今回のイメージはこれです。
http://public-yum.oracle.com/docker-images/OracleLinux/OL6/oraclelinux-6.6.tar.xz
[root@docker01 ~]# wget http://public-yum.oracle.com/docker-images/OracleLinux/OL6/oraclelinux-6.6.tar.xz
--2014-12-29 05:19:01--  http://public-yum.oracle.com/docker-images/OracleLinux/OL6/oraclelinux-6.6.tar.xz
public-yum.oracle.com をDNSに問いあわせています... 184.51.198.32, 184.51.198.8
public-yum.oracle.com|184.51.198.32|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 73544076 (70M) [application/x-tar]
`oraclelinux-6.6.tar.xz' に保存中

100%[=================================================>] 73,544,076   480K/s 時間 2m 30s

2014-12-29 05:21:32 (477 KB/s) - `oraclelinux-6.6.tar.xz' へ保存完了 [73544076/73544076]

Docker へのイメージの登録

イメージを解凍して、Docker に登録します。
[root@docker01 ~]# ls -lh oraclelinux-6.6.tar.xz
-rw-r--r--. 1 root root 71M 11月 11 05:34 2014 oraclelinux-6.6.tar.xz
[root@docker01 ~]# xz -d oraclelinux-6.6.tar.xz ★解凍
[root@docker01 ~]# ls -lh oraclelinux-6.6.tar
-rw-r--r-- 1 root root 312M 11月 11 05:34 2014 oraclelinux-6.6.tar
[root@docker01 ~]# docker load -i oraclelinux-6.6.tar ★登録

イメージが登録されました。
[root@docker01 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
oraclelinux         6.6                 d56e767abb61        6 weeks ago         319.4 MB

コンテナの起動

登録したイメージから、コンテナを起動してみます。
「docker run」コマンド実行の直後から、起動されたコンテナに接続されています。
[root@docker01 ~]# docker run -i -t --name cont01 oraclelinux:6.6 /bin/bash
[root@4296678bec11 /]# uname -n ★ここからコンテナ
4296678bec11
[root@4296678bec11 /]# cat /etc/oracle-release
Oracle Linux Server release 6.6
[root@4296678bec11 /]# uname -r
3.8.13-44.1.1.el6uek.x86_64
サービスの自動起動設定は下記のような感じです。
[root@4296678bec11 /]# chkconfig --list
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
netfs           0:off   1:off   2:off   3:on    4:on    5:on    6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
rdisc           0:off   1:off   2:off   3:off   4:off   5:off   6:off
restorecond     0:off   1:off   2:off   3:off   4:off   5:off   6:off
rhnsd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
udev-post       0:off   1:on    2:on    3:on    4:on    5:on    6:off

YUM リポジトリも参照するように設定されています。
[root@4296678bec11 /]# yum repolist
public_ol6_UEKR3_latest               | 1.2 kB     00:00
public_ol6_UEKR3_latest/primary       |  11 MB     00:17
public_ol6_UEKR3_latest                              288/288
public_ol6_latest                     | 1.4 kB     00:00
public_ol6_latest/primary             |  45 MB     01:14
public_ol6_latest                                29075/29075
repo id                 repo name                                                   status
public_ol6_UEKR3_latest Unbreakable Enterprise Kernel Release 3 for Oracle Linux 6Se   288
public_ol6_latest       Oracle Linux 6Server Latest (x86_64)                         29075
repolist: 29363

public-yum-ol6.repo ファイルには、
ひととおりの Yum リポジトリが記載されています。
※有効にされているのは、public_ol6_latest と public_ol6_UEKR3_latest だけです。
[root@4296678bec11 /]# cat /etc/yum.repos.d/public-yum-ol6.repo | grep -E "\[.*\]|name|baseurl|enable"
[public_ol6_latest]
name=Oracle Linux $releasever Latest ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/$basearch/
enabled=1
[public_ol6_addons]
name=Oracle Linux $releasever Add ons ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/addons/$basearch/
enabled=0
[public_ol6_ga_base]
name=Oracle Linux $releasever GA installation media copy ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/0/base/$basearch/
enabled=0
[public_ol6_u1_base]
name=Oracle Linux $releasever Update 1 installation media copy ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/1/base/$basearch/
enabled=0
[public_ol6_u2_base]
name=Oracle Linux $releasever Update 2 installation media copy ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/2/base/$basearch/
enabled=0
[public_ol6_u3_base]
name=Oracle Linux $releasever Update 3 installation media copy ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/3/base/$basearch/
enabled=0
[public_ol6_u4_base]
name=Oracle Linux $releasever Update 4 installation media copy ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/4/base/$basearch/
enabled=0
[public_ol6_u5_base]
name=Oracle Linux $releasever Update 5 installation media copy ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/5/base/$basearch/
enabled=0
[public_ol6_u6_base]
name=Oracle Linux $releasever Update 6 installation media copy ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/6/base/$basearch/
enabled=0
[public_ol6_UEK_latest]
name=Latest Unbreakable Enterprise Kernel for Oracle Linux $releasever ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/UEK/latest/$basearch/
enabled=$uek
[public_ol6_UEKR3_latest]
name=Unbreakable Enterprise Kernel Release 3 for Oracle Linux $releasever ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/UEKR3/latest/$basearch/
enabled=$uekr3
[public_ol6_UEK_base]
name=Unbreakable Enterprise Kernel for Oracle Linux $releasever ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/UEK/base/$basearch/
enabled=0
[public_ol6_MySQL]
name=MySQL 5.5 for Oracle Linux 6 ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/MySQL/$basearch/
enabled=0
[public_ol6_gdm_multiseat]
name=Oracle Linux 6 GDM Multiseat ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/gdm_multiseat/$basearch/
enabled=0
[public_ol6_MySQL56]
name=MySQL 5.6 for Oracle Linux 6 ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/MySQL56/$basearch/
enabled=0
[public_ol6_spacewalk20_server]
name=Spacewalk Server 2.0 for Oracle Linux 6 ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/spacewalk20/server/$basearch/
enabled=0
[public_ol6_spacewalk20_client]
name=Spacewalk Client 2.0 for Oracle Linux 6 ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/spacewalk20/client/$basearch/
enabled=0
[public_ol6_ofed_UEK]
name=OFED supporting tool packages for Unbreakable Enterprise Kernel on Oracle Linux 6 ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/ofed_UEK/$basearch/
enabled=0
[public_ol6_playground_latest]
name=Latest mainline stable kernel for Oracle Linux 6 ($basearch) - Unsupported
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/playground/latest/$basearch/
enabled=0

コンテナからデタッチ

「Ctrl + p + q」キーで、コンテナから抜けます。
キーを押すと、すぐにホスト側の OS に戻ります。
「docker ps」コマンドで、コンテナが起動したままということがわかります。
[root@4296678bec11 /]# [root@docker01 ~]# ★キー入力で抜けた
[root@docker01 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
4296678bec11        oraclelinux:6.6     "/bin/bash"         17 minutes ago      Up 17 minutes                           cont01

コンテナの停止

コンテナを、「docker stop」コマンドで停止してみます。
停止中のコンテナは、「docker ps」だけだと表示されなくなりますが、
「-a」オプションで表示することができます。
[root@docker01 ~]# docker stop cont01
cont01
[root@docker01 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
4296678bec11        oraclelinux:6.6     "/bin/bash"         19 minutes ago      Exited (-1) 7 seconds ago                       cont01

コンテナの起動

「docker start」コマンドで停止中のコンテナを起動してみます。
「docker run」とは違い、新規作成ではなく以前に作成したコンテナが起動されます。
コンテナ ID も、停止前のままです。
[root@docker01 ~]# docker start cont01
cont01
[root@docker01 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
4296678bec11
       oraclelinux:6.6     "/bin/bash"         19 minutes ago      Up 5 seconds                            cont01

コンテナに再接続

起動したコンテナに再接続してみます。
[root@docker01 ~]# docker attach cont01

[root@4296678bec11 /]# ★接続した

イメージ登録からコンテナ起動/停止まで、ひととおり試してみました。
Docker サイトからバイナリを DL~インストールする場合とは違い、
デフォルトでも、余分な標準出力がなくなります。

以上、ORACLE 製 Docker イメージを使ってみる話でした。

2014年12月30日火曜日

Oracle Linux 6.x への Docker RPM インストール。

以前、Oracle Linux 6.5 に Doker のサイトから
docker バイナリを DL して使用してみました。
今回は、ORACLE のパブリック YUM サイトにある RPM で
Docker をインストールしてみます。
http://public-yum.oracle.com/repo/OracleLinux/OL6/addons/x86_64/

手順は、Oracle Linux のマニュアル、Docker の Web サイト
どちらにもあります。
Oracle Linux
Administrator's Solutions Guide for Release 6
https://docs.oracle.com/cd/E37670_01/E37355/html/index.html

Docker
Oracle Linux 6 and 7
https://docs.docker.com/installation/oracle/

今回の環境

今回は、Oracle Linux 6.6 にインストールします。
[root@docker01 ~]# cat /etc/oracle-release
Oracle Linux Server release 6.6
[root@docker01 ~]# uname -r
3.8.13-44.1.1.el6uek.x86_64

Yum リポジトリの参照設定

Docker の RPM がある public_ol6_addons リポジトリを有効にします。
enabled=0 を enabled=1 に変更しておきます。
[root@docker01 ~]# vi /etc/yum.repos.d/public-yum-ol6.repo
[root@docker01 ~]# grep public_ol6_addons -A6 /etc/yum.repos.d/public-yum-ol6.repo
[public_ol6_addons]
name=Oracle Linux $releasever Add ons ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/addons/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

Docker の RPM

Docker パッケージが
public_ol6_addons リポジトリにあることがわかります。
[root@docker01 ~]# yum list docker
読み込んだプラグイン:security
利用可能なパッケージ
docker.x86_64                       1.3.2-1.0.1.el6                       public_ol6_addons

この RPM をインストールします。
[root@docker01 ~]# yum info docker
読み込んだプラグイン:security
利用可能なパッケージ
名前                : docker
アーキテクチャ      : x86_64
バージョン          : 1.3.2
リリース            : 1.0.1.el6
容量                : 4.3 M
リポジトリー        : public_ol6_addons
要約                : Automates deployment of containerized applications
URL                 : http://www.docker.com
ライセンス          : ASL 2.0
説明                : 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.

Docker のインストール

Docker の RPM を yum コマンドでインストールします。
[root@docker01 ~]# yum install docker
(省略)
インストール:
  docker.x86_64 0:1.3.2-1.0.1.el6

依存性関連をインストールしました:
  augeas-libs.x86_64 0:1.0.0-7.el6
  cyrus-sasl-md5.x86_64 0:2.1.23-15.el6_6.1
  dnsmasq.x86_64 0:2.48-14.el6
  ebtables.x86_64 0:2.0.9-6.el6
  glusterfs.x86_64 0:3.6.0.28-2.el6
  glusterfs-api.x86_64 0:3.6.0.28-2.el6
  glusterfs-libs.x86_64 0:3.6.0.28-2.el6
  gnutls-utils.x86_64 0:2.8.5-14.el6_5
  iscsi-initiator-utils.x86_64 0:6.2.0.873-13.0.1.el6
  libvirt.x86_64 0:0.10.2-46.0.1.el6_6.2
  libvirt-client.x86_64 0:0.10.2-46.0.1.el6_6.2
  lxc.x86_64 0:1.0.6-2.0.1.el6
  lxc-libs.x86_64 0:1.0.6-2.0.1.el6
  lzop.x86_64 0:1.02-0.9.rc1.el6
  nc.x86_64 0:1.84-22.el6
  netcf-libs.x86_64 0:0.2.4-1.el6
  qemu-img.x86_64 2:0.12.1.2-2.448.el6_6
  radvd.x86_64 0:1.6-1.el6
  usbredir.x86_64 0:0.5.1-1.el6
  yajl.x86_64 0:1.0.7-3.el6

依存性を更新しました:
  cyrus-sasl.x86_64 0:2.1.23-15.el6_6.1      cyrus-sasl-gssapi.x86_64 0:2.1.23-15.el6_6.1
  cyrus-sasl-lib.x86_64 0:2.1.23-15.el6_6.1  cyrus-sasl-plain.x86_64 0:2.1.23-15.el6_6.1

完了しました!

Docker がインストールされました。
[root@docker01 ~]# which docker
/usr/bin/docker
[root@docker01 ~]# docker -v
Docker version 1.3.2, build c78088f/1.3.2

Docker の RPM に含まれるファイルです。
「/usr/bin/docker」も含まれています。
[root@docker01 ~]# rpm -ql docker
/etc/rc.d/init.d/docker
/etc/sysconfig/docker
/etc/sysconfig/docker-storage
/etc/udev/rules.d/80-docker.rules
/usr/bin/docker
/usr/libexec/docker
/usr/libexec/docker/dockerinit
/usr/share/bash-completion/completions/docker
/usr/share/doc/docker-1.3.2
/usr/share/doc/docker-1.3.2/AUTHORS
/usr/share/doc/docker-1.3.2/CHANGELOG.md
/usr/share/doc/docker-1.3.2/CONTRIBUTING.md
/usr/share/doc/docker-1.3.2/LICENSE
/usr/share/doc/docker-1.3.2/LICENSE-vim-syntax
/usr/share/doc/docker-1.3.2/MAINTAINERS
/usr/share/doc/docker-1.3.2/NOTICE
/usr/share/doc/docker-1.3.2/README-vim-syntax.md
/usr/share/doc/docker-1.3.2/README.md
/usr/share/man/man1/docker-attach.1.gz
/usr/share/man/man1/docker-build.1.gz
/usr/share/man/man1/docker-commit.1.gz
/usr/share/man/man1/docker-cp.1.gz
/usr/share/man/man1/docker-create.1.gz
/usr/share/man/man1/docker-diff.1.gz
/usr/share/man/man1/docker-events.1.gz
/usr/share/man/man1/docker-exec.1.gz
/usr/share/man/man1/docker-export.1.gz
/usr/share/man/man1/docker-history.1.gz
/usr/share/man/man1/docker-images.1.gz
/usr/share/man/man1/docker-import.1.gz
/usr/share/man/man1/docker-info.1.gz
/usr/share/man/man1/docker-inspect.1.gz
/usr/share/man/man1/docker-kill.1.gz
/usr/share/man/man1/docker-load.1.gz
/usr/share/man/man1/docker-login.1.gz
/usr/share/man/man1/docker-logout.1.gz
/usr/share/man/man1/docker-logs.1.gz
/usr/share/man/man1/docker-pause.1.gz
/usr/share/man/man1/docker-port.1.gz
/usr/share/man/man1/docker-ps.1.gz
/usr/share/man/man1/docker-pull.1.gz
/usr/share/man/man1/docker-push.1.gz
/usr/share/man/man1/docker-restart.1.gz
/usr/share/man/man1/docker-rm.1.gz
/usr/share/man/man1/docker-rmi.1.gz
/usr/share/man/man1/docker-run.1.gz
/usr/share/man/man1/docker-save.1.gz
/usr/share/man/man1/docker-search.1.gz
/usr/share/man/man1/docker-start.1.gz
/usr/share/man/man1/docker-stop.1.gz
/usr/share/man/man1/docker-tag.1.gz
/usr/share/man/man1/docker-top.1.gz
/usr/share/man/man1/docker-unpause.1.gz
/usr/share/man/man1/docker-version.1.gz
/usr/share/man/man1/docker-wait.1.gz
/usr/share/man/man1/docker.1.gz
/usr/share/man/man5/Dockerfile.5.gz
/usr/share/vim/vimfiles/doc/dockerfile.txt
/usr/share/vim/vimfiles/ftdetect/dockerfile.vim
/usr/share/vim/vimfiles/syntax/dockerfile.vim
/usr/share/zsh/site-functions/_docker
/var/lib/docker

デフォルトで docker デーモンは自動起動するようになっていますが、
インストール直後は停止しているので起動します。
[root@docker01 ~]# chkconfig --list docker
docker          0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@docker01 ~]# service docker status
docker は停止しています
[root@docker01 ~]# service docker start
Starting cgconfig service:                                 [  OK  ]
Starting docker:                                           [  OK  ]

docker が起動されています。
[root@docker01 ~]# docker info
Containers: 1
Images: 1
Storage Driver: devicemapper
 Pool Name: docker-252:0-270430-pool
 Pool Blocksize: 65.54 kB
 Data file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata
 Data Space Used: 661 MB
 Data Space Total: 107.4 GB
 Metadata Space Used: 970.8 kB
 Metadata Space Total: 2.147 GB
 Library Version: 1.02.89-RHEL6 (2014-09-01)
Execution Driver: native-0.2
Kernel Version: 3.8.13-44.1.1.el6uek.x86_64
Operating System: <unknown>

以上、Oracle Linux への Docker RPM インストールでした。

2014年12月29日月曜日

最近の OTN 掲示板(日本語)について。

もともと私は、OTN の掲示板に積極的に参加してませんでしたが、
以前はこの掲示板が、大変、栄えていました。
Oracle Technology Network (OTN) Japan - 掲示板
こちらは旧OTN掲示板です。

http://otn.oracle.co.jp/forum/index.jspa?categoryID=2
懐かしい OTN 掲示板。



2014年12月21日日曜日

Oracle VM Server と Docker。


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チューニング、クイズ! 駆動表(外部表)はどれだ!!!!
です。

2014年12月7日日曜日

Oracle VM Server と OpenStack。

今日は、JPOUG Advent Calendar 2014 の7日目のエントリです。
昨日は kouta shiobara さんの Trying Database: optimizer_dynamic_sampling=11 でした。


今回は、最近提供開始された、
ORACLE の OpenStack ディストリビューションの話です。
Oracle VM Server for x86 も、OpenStack で管理できるようになります。

Oracle OpenStack for Oracle Linux
http://www.oracle.com/us/technologies/linux/openstack/overview/index.html


OpenStack にするとどうなるのか?

そもそも、Oracle VM Server 自体は、割と普通な Xen ハイパーバイザであり、
「Oracle VM」としては、Oracle VM Manager から管理することにより
Oracle VM 的な世界観(たとえばサーバプールとか)で Xen を使用するようになっていました。


今までも Xen コマンド(xm ~、xl ~など)での直接操作はできましたが、
製品の設計思想的には Oracle VM Manager(Oracle VM Manager) は必須でした・・・

一方、OpenStack と組み合わせる場合は、
OpenStack から Oracle VM Manager を介した管理をするわけではなく、
直接 Oracle VM Server を管理します。
これまでの「Oracle VM」的な世界観がなくなり、OpenStack の世界観に変わると考えられます。
別のパターンとして、VMware vSphere の場合は OpenStack で ESXi ハイパーバイザ管理する場合も
必ず vCenter Server を経由するようにしています。



他にも Oracle VM Manager 管理と OpenStack 管理との大きな違いとして、
KVM(たとえば Oracle Linux の KVM)も管理可能なようです。(まだ試してませんが・・・)


そして、Oracle OpenStack for Oracle Linux はじめました。

ORACLE 版 OpenStack は、Packstack (他のディストリビューション同様・・・)を使用することで
割と簡単に環境構築できます。
インストールや packstack コマンド処理中に、下記の Yum リポジトリを参照します。

今回は構築手順を省略しますが、このドキュメントが参考になると思います。
Oracle OpenStack for Oracle Linux Release 1.0Installation and User's Guide
http://www.oracle.com/technetwork/server-storage/openstack/linux/documentation/oracle-openstack-user-guide-2296176.pdf
OpenStack 環境は、Horizon Dashboard(Web UI) から操作できます。
admin ユーザのパスワードはセットアップ中に自動生成されます。
パスワードは、Control Node の /root/keystonerc_admin ファイルを見るとわかります。



Web UI は、日本語でも表示できます。



Oracle VM Server は、2台登録しました。
ハイパーバイザの種別は、「Xen」になります。



VM (インスタンス)を起動してみました。
※今回は、事前に手作業で VM のイメージを登録してあります。



OpenStack の CLI (nova コマンド)では下記のように見えます。
[root@osctlr1 ~]# cat /etc/oracle-release
Oracle Linux Server release 6.5
[root@osctlr1 ~]# source /root/keystonerc_admin
[root@osctlr1 ~(keystone_admin)]# nova list
+--------------------------------------+------+--------+------------+-------------+---------------------+
| ID                                   | Name | Status | Task State | Power State | Networks            |
+--------------------------------------+------+--------+------------+-------------+---------------------+
| 09dec348-ead2-44c8-8528-92bb5ea76aa1 | vm01 | ACTIVE | -          | Running     | nw-103=192.168.0.33 |
| 9d619aa0-2315-459c-93b6-561f74377d39 | vm02 | ACTIVE | -          | Running     | nw-103=192.168.0.34 |
+--------------------------------------+------+--------+------------+-------------+---------------------+
見栄えがわるいので、一部だけ表示してみました。
[root@osctlr1 ~(keystone_admin)]# nova list | awk -F\| '{print $2,$3,$4,$6}' | grep -v ^+

 ID                                     Name   Status   Power State

 09dec348-ead2-44c8-8528-92bb5ea76aa1   vm01   ACTIVE   Running
 9d619aa0-2315-459c-93b6-561f74377d39   vm02   ACTIVE   Running

そして、Oracle VM Server 側では以下のように見えます。
2台の Oracle VM Server で、内部的には別の VM 名で起動されています。

1台目
[root@ovms331-1 ~]# cat /etc/ovs-release
Oracle VM server release 3.3.1
[root@ovms331-1 ~]# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   855     2     r-----   4404.7
instance-00000004                            3   512     1     -b----      3.6

2台目
[root@ovms331-2 ~]# cat /etc/ovs-release
Oracle VM server release 3.3.1
[root@ovms331-2 ~]# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   855     2     r-----   4608.7
instance-00000005                            3  2048     1     -b----    308.5

ためしにセットアップしてみたところ、Oracle VM Manager 無しでも
Oracle VM Server の設定から VM 作成までできました。
ただ、VM のイメージ作成などは、引き続き 悩ましい気がします。
そのうち、もうすこし OpenStack っぽいことをしてみたいと思います。


以上、ORACLE の OpenStack についてでした。
明日は、wmo6hash さんです。よろしくお願いします。

JPOUG Advent Calendar 2014
http://jpoug.doorkeeper.jp/events/17313