表題の通り。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を探す。
公式なものは無いようであるので、”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]
接続ができた。
以上。