After I spin up Accumulo in a Docker container, well-known ports (like 2181 for Zookeeper) are not well-known any more. The internal private port (i.e., 2181) is exposed as a different public port (i.e., 49143). Java program trying to connect to Accumulo must automatically find the public port numbers.
The java code below finds the public port for Zookeeper for a Docker container named "walt". I don't know why the slash is needed in the image name.

int wantedPublicPort = -1;

        String wantedContainerName = "/walt";
        int wantedPrivatePort = 2181;

        String dockerURL = "";
        String dockerUser = "medined";
        String dockerPassword = "XXXXX";
        String dockerEmail = "";
        DockerClient docker = new DockerClient(dockerURL);
        docker.setCredentials(dockerUser, dockerPassword, dockerEmail);

        List<Container> containers = docker.listContainersCmd().exec();
        for (Container container : containers) {
            String[] names = container.getNames();
            for (String name : container.getNames()) {
                if (name.equals(wantedContainerName)) {
                    for (Container.Port port : container.getPorts()) {
                        if (port.getPrivatePort() == wantedPrivatePort) {
                            wantedPublicPort = port.getPublicPort();

        System.out.println("Zookeeper Port: " + wantedPublicPort);

In order to use the DockerClient object, I added the following to my pom.xml: