ZooKeeperをDockerでインストールして開発環境を構築する
ここではZooKeeperを試すために、dockerを使ってlocal開発環境を構成する。
Dockerイメージ
以下のDockerイメージを利用して、Docker環境にZooKeeperをインストールする。
- ZooKeeper公式Dockerイメージ
- ZooKeeper Web Dockerイメージ
Dockerの設定と実行
作業ディレクトリの作成
適切な場所に作業ディレクトリを作成する。
% mkdir zookeeper
% cd zookeeper
docker-composeを作成する
docker-compose.ymlを作成し、次の内容を書く。
version: '3.1'
services:
zookeeper:
container_name: zookeeper-server
image: zookeeper
ports:
- 2181:2181
docker-composeの実行
ymlファイルを書き終えたら、次のコマンドで実行する。
docker-compose -f docker-compose.yml up -d
dockerコンテナの実行確認
上記のコマンドを実行すると、KafkaとZookeeperの2台が実行されていることを確認できる。
docker ps -a
% docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6f95cc0e6a9a zookeeper "/docker-entrypoint.…" 17 seconds ago Up 16 seconds 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp zookeeper
web-consoleのインストール
使いやすくするためにweb-consoleをインストールする。
先ほど作成したymlファイルにZK-WebコンソールのDocker設定を追加する。
version: '3.7'
services:
zookeeper:
container_name: zookeeper-server
image: zookeeper
ports:
- 2181:2181
zk-web:
container_name: zk-web-server
image: goodguide/zk-web
ports:
- 8080:8080
environment:
- ZKWEB_PORT=8080 # Web Port
- ZKWEB_CREDENTIALS=admin:hello # Adminアカウント:パスワード
- ZKWEB_DEFAULT_NODE=localhost:2181/default-node
networks:
promnet:
driver: bridge
既存のdocker-composeをrmコマンドで削除し、再びupで実行する。
% docker-compose stop
% docker-compose rm
% docker-compose -f docker-compose.yml up -d
正しくインストールできていれば、localhost:8080でzk-webにアクセスできる。
web-consoleでznodeを確認する
まずZooKeeperサーバーのアドレスを確認する。
コンテナIDをpsコマンドで確認する。
% docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fdf840485d3d zookeeper "/docker-entrypoint.…" 2 seconds ago Up 1 second 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp zookeeper
5e55c24e6186 noteax/zk-web-docker "/docker-entrypoint.…" 2 seconds ago Up 1 second 0.0.0.0:8080->8080/tcp zk_web
確認したIDを次のように入力し、inspectコマンドを実行する。
docker inspect ${CONTAINER ID}
inspectコマンドで、コンテナのGateway IPをNetworkSettings > Networks > Gatewayから確認する。
% docker inspect fdf840485d3d
[
...
"NetworkSettings": {
...
"Networks": {
"zookeeper_default": {
...
"Gateway": "172.20.0.1",
...
}
}
}
...
]
上記ではGateway IPは172.20.0.1である。
ZK-Webに移動し、下の入力欄に{Gateway IP}:2181を入力する。上記の例では172.20.0.1:2181と入力すればよい。

loginボタンをクリックし、先ほど設定したadminアカウントで接続すると、作成、修正、削除ができる。
Cluster構成
次のように設定すると、Cluster構成を簡単に作成できる。
version: '3.7'
services:
zk1:
image: zookeeper
hostname: zk1
ports:
- 2181:2181
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zk2:2888:3888;2181 server.3=zk3:2888:3888;2181
restart: always
zk2:
image: zookeeper
hostname: zk2
ports:
- 2182:2181
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zk1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zk3:2888:3888;2181
restart: always
zk3:
image: zookeeper
hostname: zk3
ports:
- 2183:2181
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zk1:2888:3888;2181 server.2=zk2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181
restart: always
zk-web:
container_name: zk_web
image: noteax/zk-web-docker
ports:
- 8080:8080
environment:
- ZKWEB_PORT=8080 # Web Port
- ZKWEB_CREDENTIALS=admin:hello # Adminアカウント:パスワード
- ZKWEB_DEFAULT_NODE=localhost:2181/default-node
restart: always