docker-machineでZooKeeper

表題の通り。docker-machineでローカルにDockerサーバを起動し、そこにApache ZooKeeperのコンテナを稼働させてみる。また、稼働しているZooKeeperに対して、ローカルのMacからアクセスをする。

■ 環境

  • Docker 1.8.1
  • docker-machine 0.3.1
  • ZooKeeper 3.4.6
  • Mac OSX (10.10.5)

■ Dockerサーバ

docker-machineでローカルにVirtualBoxをDriverに起動する。docker-machine上における名前はわかりやすいように”local”とした。

$ docker-machine create -d virtualbox local
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
To see how to connect Docker to this machine, run: docker-machine env local
$

起動したらDockerサーバにアクセス可能になるように設定を入れる。

$ eval $(docker-machine env local)

これでdockerコマンドが利用可能となったはずだ。接続対象はdocker-machineで起動したDockerホストである。

$ docker version
Client:
 Version:      1.8.1
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   d12ea79
 Built:        Thu Aug 13 02:49:29 UTC 2015
 OS/Arch:      darwin/amd64

Server:
 Version:      1.8.1
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   d12ea79
 Built:        Thu Aug 13 02:49:29 UTC 2015
 OS/Arch:      linux/amd64
$

■ ZooKeeperコンテナ

Dockerのコンテナを共有する公式のページにてZooKeeperを探す。

https://hub.docker.com

公式なものは無いようであるので、”Downloads“でソートし一番ダウンロードされているものにした。

https://hub.docker.com/r/jplock/zookeeper/

現時点ではコンテナイメージはローカルに存在しない。上記を`pull`する。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
$
$ docker pull jplock/zookeeper
Using default tag: latest
Pulling repository docker.io/jplock/zookeeper
  :
Status: Downloaded newer image for jplock/zookeeper:latest
$
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
jplock/zookeeper    latest              9ce81845fa8f        21 months ago       515.6 MB
$

※ 2015/09/02 追記 —>

latest“タグで`pull`したコンテナのZooKeeperのVersionは”3.4.5“であった。”3.4.6“を使用したい場合は、”3.4.6“タグの付いたコンテナを`pull`しなくてはならない。

※ 2015/09/02 追記 <—

■ Dockerコンテナ起動

ZooKeeperのコンテナを起動する。

$ docker run -d jplock/zookeeper

起動して接続と思ったが、このままではローカルのMacからはアクセスできないことに気がついた。起動時のオプションを追加する。その前に現在稼働しているコンテナの停止と削除。

$ docker stop 2aec96c41577
$ docker rm 2aec96c41577

コンテナ名を指定していなかったので、`docker stop`/`docker rm`の実行時にコンテナIDを指定しなければならなかった。次はコンテナ名を指定することにする。また、`-p`オプションを使用して2181ポートをDockerホストの外部に向けて開放する。

$ docker run -d -p 2181:2181 --name zookeeper jplock/zookeeper

確認してみると下記のようになっている。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
6a41317bfd37        jplock/zookeeper    "/opt/zookeeper-3.4.5"   5 seconds ago       Up 4 seconds        0.0.0.0:2181->2181/tcp   zookeeper
$

■ ローカルからの接続確認

DockerホストのIPを確認する。

$ docker-machine ls
NAME    ACTIVE   DRIVER       STATE     URL                         SWARM
local   *        virtualbox   Running   tcp://192.168.99.100:2376
$

これでローカルMacのzkCliコマンドでも接続ができるはずだ。

$ zkCli -server 192.168.99.100:2181
Connecting to 192.168.99.100:2181
Welcome to ZooKeeper!
JLine support is enabled

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: 192.168.99.100:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: 192.168.99.100:2181(CONNECTED) 1]

接続ができた。

以上。

■ 関連

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください