连接到 ZooKeeper 图像容器和 运行 zookeeper 命令
Connect to ZooKeeper image container and run zookeeper commands
我通过 docker-compose 在 Docker
上 运行 宁 ZooKeeper
图片。
我的文件是:
--repo
----script.zk (contains zookeeper script commands such as `create`
----docker-compose.yaml
----Dockerfile.zookeeper
----zoo.cfg
docker-compose.yaml 包含名称和属性:
services:
zoo1:
restart: always
hostname: zoo1
container_name: zoo1
build:
context: .
dockerfile: Dockerfile.zookeeper
volumes:
- $PWD/kyc_zookeeper.cfg:/conf/zoo.cfg
ports:
- 2181:2181
environment:
.... and two more nodes
Dockerfile.zookeeper 目前只包含图片
FROM zookeeper:3.4
我可以在本地 运行 zkCli.sh
并与 zookeeper 通信,但我希望在 Dockerfile.zookeeper 运行 时自动进行。
我是否需要使用虚拟机创建容器、安装 zookeeper 并将 zkCli.sh 复制到容器中以便 运行 命令?
或者是否可以通过 Dockerfile 运行 zookeeper 命令?
我也尝试过附加到容器并在 docker 文件中使用 CMD,但它不起作用。
知道我该怎么做吗?
谢谢
为了解决我写的 bash 脚本,谁得到 zookeeper 主机和 zookeeper 脚本(逐行包含 zookeeper 命令的文件)
和 运行 远程 docker 上包含 zookeeper 图像的所有命令:
config_script_file=""
zookeeper_host_url=""
#Retrieve all commands from file
TMPVAR=""
while read -r line
do
if [ -z "$TMPVAR" ]; then
TMPVAR="$line"
else
TMPVAR="$TMPVAR\n$line"
fi
done < "$config_script_file"
#Run ZooKeeper commands on remote machine
docker exec -i $zookeeper_host_url bash << EOF
./bin/zkCli.sh -server localhost:2181
$(echo -e ${TMPVAR})
quit
exit
EOF
动物园管理员脚本示例:
create /x 1
create /y 2
用法:
./zkCliHelper.sh <zookeeper_url> <script.zk file>
我通过 docker-compose 在 Docker
上 运行 宁 ZooKeeper
图片。
我的文件是:
--repo
----script.zk (contains zookeeper script commands such as `create`
----docker-compose.yaml
----Dockerfile.zookeeper
----zoo.cfg
docker-compose.yaml 包含名称和属性:
services:
zoo1:
restart: always
hostname: zoo1
container_name: zoo1
build:
context: .
dockerfile: Dockerfile.zookeeper
volumes:
- $PWD/kyc_zookeeper.cfg:/conf/zoo.cfg
ports:
- 2181:2181
environment:
.... and two more nodes
Dockerfile.zookeeper 目前只包含图片
FROM zookeeper:3.4
我可以在本地 运行 zkCli.sh
并与 zookeeper 通信,但我希望在 Dockerfile.zookeeper 运行 时自动进行。
我是否需要使用虚拟机创建容器、安装 zookeeper 并将 zkCli.sh 复制到容器中以便 运行 命令?
或者是否可以通过 Dockerfile 运行 zookeeper 命令?
我也尝试过附加到容器并在 docker 文件中使用 CMD,但它不起作用。
知道我该怎么做吗?
谢谢
为了解决我写的 bash 脚本,谁得到 zookeeper 主机和 zookeeper 脚本(逐行包含 zookeeper 命令的文件)
和 运行 远程 docker 上包含 zookeeper 图像的所有命令:
config_script_file=""
zookeeper_host_url=""
#Retrieve all commands from file
TMPVAR=""
while read -r line
do
if [ -z "$TMPVAR" ]; then
TMPVAR="$line"
else
TMPVAR="$TMPVAR\n$line"
fi
done < "$config_script_file"
#Run ZooKeeper commands on remote machine
docker exec -i $zookeeper_host_url bash << EOF
./bin/zkCli.sh -server localhost:2181
$(echo -e ${TMPVAR})
quit
exit
EOF
动物园管理员脚本示例:
create /x 1
create /y 2
用法:
./zkCliHelper.sh <zookeeper_url> <script.zk file>