连接到ZooKeeper映像容器并运行zookeeper命令
我通过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运行时自动执行。
我是否需要用vm创build容器,安装zookeeper并将zkCli.sh复制到容器中以运行命令?
或者有可能通过Dockerfile运行zookeeper命令?
我已经尝试过附加到容器,并在docker文件中使用CMD,但它不工作。
任何想法我怎么能做到这一点?
谢谢
为了解决,我写了bash脚本,谁得到zookeeper主机和zookeeper脚本(文件与zookeeper命令一行一行)
并运行包含zookeeper映像的远程docker上的所有命令:
config_script_file="$2" zookeeper_host_url="$1" #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
动物园pipe理员脚本的示例:
create /x 1 create /y 2
用法:
./zkCliHelper.sh <zookeeper_url> <script.zk file>
- docker-compose中的Docker Couchbase:无法连接到127.0.0.1端口8091:Connection refused wh
- 你如何安装apache服务器(httpd)codenvy?
- 使用docker-compose与docker运行不同的结果
- Docker容器有问题
- 如何在本地部署Docker的Kubernetes?
- javax.naming.NameNotFoundException:名称未在此上下文中绑定。 无法find
- 在/ usr / local / bin / docker-compose上允许任何人的可执行权限?
- 将外部application.properties文件添加到tomcat中的dockerized spring启动web应用程序
- 使用docker-compose volumes_from选项不起作用
- 如何连接一个docker容器到主机上的ssh forward Xserver?
- 使用Docker镜像运行shell脚本