使用预加载的数据创build自定义Zookeeper映像

我正在尝试使用预加载的数据创build一个泊坞窗图像,可以用于本地testing。

我的Dockerfile如下所示:

FROM zookeeper:3.4.10 RUN /bin/bash -c bin/zkCli.sh create /test test_data 

第二行( RUN )是从我最初的testing中派生出来的,它的运行方式和运行容器一样:

 docker-compose exec custom_zookeeper bin/zkCli.sh create /test test_data 

在构build映像时,我看到以下输出:

 Building zookeeper Step 1/2 : FROM zookeeper:3.4.10 ---> d9fe1374256f Step 2/2 : RUN /bin/bash -c bin/zkCli.sh create /test test_data ---> Running in 83290eadbeb9 Connecting to localhost:2181 2017-11-09 22:13:55,953 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT 2017-11-09 22:13:55,959 [myid:] - INFO [main:Environment@100] - Client environment:host.name=83290eadbeb9 2017-11-09 22:13:55,959 [myid:] - INFO [main:Environment@100] - Client environment:java.version=1.8.0_131 2017-11-09 22:13:55,964 [myid:] - INFO [main:Environment@100] - Client environment:java.vendor=Oracle Corporation 2017-11-09 22:13:55,964 [myid:] - INFO [main:Environment@100] - Client environment:java.home=/usr/lib/jvm/java-1.8-openjdk/jre 2017-11-09 22:13:55,964 [myid:] - INFO [main:Environment@100] - Client environment:java.class.path=/zookeeper-3.4.10/bin/../build/classes:/zookeeper-3.4.10/bin/../build/lib/*.jar:/zookeeper-3.4.10/bin/../lib/slf4j-log4j12-1.6.1.jar:/zookeeper-3.4.10/bin/../lib/slf4j-api-1.6.1.jar:/zookeeper-3.4.10/bin/../lib/netty-3.10.5.Final.jar:/zookeeper-3.4.10/bin/../lib/log4j-1.2.16.jar:/zookeeper-3.4.10/bin/../lib/jline-0.9.94.jar:/zookeeper-3.4.10/bin/../zookeeper-3.4.10.jar:/zookeeper-3.4.10/bin/../src/java/lib/*.jar:/conf: 2017-11-09 22:13:55,965 [myid:] - INFO [main:Environment@100] - Client environment:java.library.path=/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/server:/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64:/usr/lib/jvm/java-1.8-openjdk/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib 2017-11-09 22:13:55,965 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=/tmp 2017-11-09 22:13:55,965 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler=<NA> 2017-11-09 22:13:55,965 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Linux 2017-11-09 22:13:55,965 [myid:] - INFO [main:Environment@100] - Client environment:os.arch=amd64 2017-11-09 22:13:55,966 [myid:] - INFO [main:Environment@100] - Client environment:os.version=4.9.49-moby 2017-11-09 22:13:55,966 [myid:] - INFO [main:Environment@100] - Client environment:user.name=root 2017-11-09 22:13:55,966 [myid:] - INFO [main:Environment@100] - Client environment:user.home=/root 2017-11-09 22:13:55,966 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=/zookeeper-3.4.10 2017-11-09 22:13:55,968 [myid:] - INFO [main:ZooKeeper@438] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@3eb07fd3 Welcome to ZooKeeper! 2017-11-09 22:13:56,022 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1032] - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error) JLine support is enabled 2017-11-09 22:13:56,148 [myid:] - WARN [main-SendThread(localhost:2181):ClientCnxn$SendThread@1162] - Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361) at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1141) [zk: localhost:2181(CONNECTING) 0] ---> 53374b010757 Removing intermediate container 83290eadbeb9 Successfully built 53374b010757 Successfully tagged custom_zookeeper:latest 

它能够build立图像,但RUN失败。 CLI客户端似乎无法连接,因为服务尚未运行。

将数据预加载到zookeeper映像中的正确方法是什么?