无法运行docker命令

时间:2015-09-22 19:08:23

标签: unix tcp docker

我正在使用命令

运行docker
sudo docker -H 0.0.0.0:2375 -d &

然后我使用teh dockerjava客户端以下列方式创建图像和运行容器

DockerClient dockerClient = DockerClientBuilder.getInstance("http://localhost:2375").build();
            l
                CreateContainerResponse container = dockerClient.createContainerCmd(image_name)
                        .exec();
                dockerClient.startContainerCmd(container.getId()).exec();

这样可以正常工作,并且docker日志也很好看。但是当我尝试使用包括docker ps, docker images, docker info在内的任何docker命令时,所有这些命令都会因以下错误而失败

FATA[0000] Get http:///var/run/docker.sock/v1.18/info: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS? 

使用sud也无法解决问题。我在unix上运行docker。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

  

使用sudo也无法解决问题。我在unix上运行docker。有什么想法吗?

你已经启动了Docker侦听TCP套接字。这意味着当docker客户端尝试连接到默认的Unix域套接字时,那里什么都没有。错误信息非常清楚:

dial unix /var/run/docker.sock: no such file or directory.

您需要告诉docker客户端要连接的位置,就像您必须将这些信息提供给代码中的DockerClientBuilder类一样。您可以(a)使用客户端的-H选项或(b)使用DOCKER_HOST环境变量来执行此操作。

例如:

$ docker -H http://localhost:2375 ps
$ docker -H http://localhost:2375 pull alpine

或者:

$ export DOCKER_HOST=http://localhost:2375
$ docker ps
$ docker pull alpine