まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

タグ:docker

IBM Bluemix からも提供されている NoSQL 型データベースの DBaaS "Cloudant" の開発者向けエディションが Docker イメージでの無料提供が開始されました:
https://hub.docker.com/r/ibmcom/cloudant-developer/

2016091004


1インスタンスでスケーリングなし&サポートもなし、という条件は付きますが、IBM Bluemix などのアプリケーション開発者がローカル環境だけでシングルテナントの Cloudant の環境を使うことができるようになります。以下、その手順を紹介します。

まず利用にあたり、docker 1.9 以上が必要です。RHEL/CentOS の 6.x の場合は docker 1.7 までしかサポートされていないため、バージョン7以上を用意する必要があります。

docker 環境が用意できたら、以下のコマンドで開発者向け Cloudant のイメージを pull します:
# docker pull ibmcom/cloudant-developer

そして以下のコマンドでローカル環境上にコンテナを作り、起動します:
# docker run --privileged --detach --volume cloudant:/srv --name cloudant-developer --publish 8080:80 --hostname cloudant.dev ibmcom/cloudant-developer

初回起動時のみ、ライセンス規約に同意する必要があります。以下のコマンドを実行してライセンス画面を表示します:
# docker exec -ti cloudant-developer cast license --console

すると以下の様なライセンス内容がコンソールに表示されます。同意する場合は "1" を入力してください:

2016091001


また、これも最初の1回だけ利用前にデータベースを初期化する必要があります。初期化は以下のコマンドを実行します:
# docker exec cloudant-developer cast database init -v -y -p pass

これで準備は完了です、簡単ですね。実際にローカル環境の Cloudant を利用するにはウェブブラウザで以下のアドレスにアクセスします:
http://(docker が動いているマシンのIPアドレス):8080/dashboard.html

すると以下の様なログインが画面が現れます。デフォルトでは
 Username = admin
 Password = pass
という ID & パスワードがセットされているので、この値を入力してログインしてください:

2016091002


ログインが成功すると、見慣れた Cloudant のダッシュボード画面が表示されます。後はいつもと一緒です。これでいつでもローカルで手軽に使える Cloudant 環境が用意できました:

2016091003

コンテナ型の仮想環境の1つで、最近人気の Docker を CentOS で導入し、Apache HTTPD サーバーを動かしてみるまでの手順を紹介します。以下の例ではホストの CentOS は6.6(x86_64) を使っています。
docker-whale-home-logo


ところで、最近流行りの Docker を簡単に説明しておきます。上記で「仮想環境の1つ」と紹介しましたが、いわゆる VM を使いません。その意味では「完全な意味での仮想マシン、ではない仮想環境」です。仮想マシンでは1台のサーバーをまるごと仮想化して、そこで動く OS を選ぶこともできるし、その OS 内にインストールされるミドルウェアやアプリケーションソフトウェアも完全に仮想マシンごとに分離されて独立しています。その代わり、例えば起動時などはこの仮想マシンをブートプロセスから起動することになるので通常のマシンと同等の時間がかかりますし、1台の仮想マシンを動かすのに必要なリソースは仮想環境であってもなくても変わりません。 一方、コンテナ型の Docker の場合、仮想環境はホストマシンの1プロセスとして(プロセス空間やファイル空間が制限された状態で)動きます。そのため OS ごと動かすハイパーバイザー型(VM型)の仮想環境と比べてオーバーヘッドが少なく、軽量に動かすことができる、というメリットがあります。 また上記のように OS の1プロセスとして動くので、例えばホストOS自体が仮想環境である Amazon EC2 や VPS など、(ハイパーバイザー型)仮想サーバーの上で更に Docker を動かす、といったことも可能です。 その代わり OS を自由に選ぶということはできず、Linux(Ubuntu, RHEL, CentOS, ..) に限られる、という制約があります。


ではこの Docker 環境を CentOS 上で整えるための導入手順を紹介します。といっても意外と簡単です。

まずは docker のインストールです。CentOS 向けには EPEL リポジトリから提供されているので、必要であれば EPEL リポジトリの追加から行います:
# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm (EPELリポジトリ追加)
# yum -y install docker-io (Dockerインストール)
# /etc/init.d/docker start (Docker 起動)
# chkconfig docker on (Docker 自動起動ON)
これでインストール及び起動まで完了です。KVM などと比べると超簡単。


実際に Docker を使ってみます。公式 centos イメージの centos6 をインストールして、コンテナ内で /etc/redhat-release の内容を確認してみます:
# docker run -it centos:centos6 cat /etc/redhat-release
  :
(初回実行時はここで公式 centos6 イメージのダウンロードが開始される)
  :
CentOS release 6.6 (Final)

というわけで、現時点では公式 centos6 イメージが 6.6 を使っていることが分かりました。

インストールも動作確認もできましたが、せっかくなのでもう少し実用的な作業を紹介しましょう。コンテナ内のシェルコンソールにログインして Apache HTTPD でもインストールしてみましょうか。

まずはコンテナ内のシェル(/bin/bash)を起動し、Apache HTTPD をインストール&起動し、index.html ファイルを作成します:
# docker run -it centos:centos6 /bin/bash 
(ここから上はホストOS)
(ここから下はコンテナ内)
# yum install -y httpd
# /etc/init.d/httpd start
# echo "Hello CentOS 6 on Docker" > /var/www/html/index.html

更にコンテナ内の IP アドレスを確認します:
# ifconfig
eth0   Link encap:Ethernet  HWaddr 02:42:AC:11:00:03
       inet addr:172.17.0.3  Bcast:0.0.0.0  Mask:255.255.0.0 ←この例だと172.17.0.3 がコンテナのアドレス
       inet6 addr: fe80::42:acff:fe11:3/64 Scope:Link
             :
# exit
(ここから上はコンテナ内)
(ここから下はホストOS)
# 

IP アドレスが分かったのでホストOSからブラウザでアクセスしてみます:
2014120701


ちゃんと動いてますね。Apache HTTPD の導入も成功しました。Apache HTTPD 以外のソフトを導入する場合も同様です。
 

このページのトップヘ