1、獲取zookeeper的鏡像
docker pull zookeeper
當出現如下結果時, 表示鏡像已經下載完成了:
>>> docker pull zookeeper Using default tag: latest latest: Pulling from library/zookeeper e110a4a17941: Pull complete a696cba1f6e8: Pull complete bc427bd93e95: Pull complete c72391ae24f6: Pull complete 40ab409b6b34: Pull complete d4bb8183b85d: Pull complete 0600755f1470: Pull complete Digest: sha256:12458234bb9f01336df718b7470cabaf5c357052cbcb91f8e80be07635994464 Status: Downloaded newer image for zookeeper:latest
2、單機運行zookeeper
啟動zookeeper容器:
>>> docker run --name my_zookeeper -d zookeeper:latest
查看zookeeper容器運行的日志:
docker logs -f my_zookeeper
3、搭建zookeeper集群
因為一個一個地啟動Zookeeper太麻煩了, 所以為了方便起見, 我直接使用 docker-compose 來啟動Zookeeper集群.
首先創建一個名為 docker-compose.yml 的文件, 其內容如下:
version: '2' services: zoo1: image: zookeeper restart: always container_name: zoo1 ports: - "2181:2181" environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 zoo2: image: zookeeper restart: always container_name: zoo2 ports: - "2182:2181" environment: ZOO_MY_ID: 2 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 zoo3: image: zookeeper restart: always container_name: zoo3 ports: - "2183:2181" environment: ZOO_MY_ID: 3 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
這個配置文件會告訴 Docker 分別運行三個 zookeeper 鏡像, 並分別將本地的 2181, 2182, 2183 端口綁定到對應的容器的2181端口上.ZOO_MY_ID 和 ZOO_SERVERS 是搭建 ZK 集群需要設置的兩個環境變量, 其中 ZOO_MY_ID 表示 ZK 服務的 id, 它是1-255 之間的整數, 必須在集群中唯一. ZOO_SERVERS 是ZK 集群的主機列表.
接着我們在 docker-compose.yml 當前目錄下運行:
COMPOSE_PROJECT_NAME=zk_test docker-compose up
即可啟動 ZK 集群了.
執行上述命令成功后, 接着在另一個終端中運行 docker-compose ps 命令可以查看啟動的 ZK 容器:
>>> COMPOSE_PROJECT_NAME=zk_test docker-compose ps Name Command State Ports ---------------------------------------------------------------------- zoo1 /docker-entrypoint.sh zkSe ... Up 0.0.0.0:2181->2181/tcp zoo2 /docker-entrypoint.sh zkSe ... Up 0.0.0.0:2182->2181/tcp zoo3 /docker-entrypoint.sh zkSe ... Up 0.0.0.0:2183->2181/tcp