docker错误:/var/run/docker.sock:没有这样的文件或目录

我是docker工人。 我有一个shell脚本,将数据加载到impala,我想运行一个docker文件构build一个图像并运行容器。 我在Mac上,安装了boot2docker,并设置了DOCKER_HOST env。

 bash-3.2$ docker info Containers: 0 Images: 0 Storage Driver: aufs Root Dir: /mnt/sda1/var/lib/docker/aufs Dirs: 0 Execution Driver: native-0.2 Kernel Version: 3.15.3-tinycore64 Debug mode (server): true Debug mode (client): false Fds: 10 Goroutines: 10 EventsListeners: 0 Init Path: /usr/local/bin/docker Sockets: [unix:///var/run/docker.sock tcp://0.0.0.0:2375] 

我正在尝试使用以下方法安装预build的图像:

 sudo docker pull busybox 

我得到这个错误:

sudo docker pull busybox 2014/08/18 17:56:19 Post http:///var/run/docker.sockhttp://img.dovov.comcreate?fromImage=busybox&tag=: dial unix /var/run/docker.sock: no such file or directory

我的docker设置有问题吗?

当我做一个docker pull busybox ,它会拉取图像并下载完成。

 bash-3.2$ docker pull busybox Pulling repository busybox a9eb17255234: Download complete fd5373b3d938: Download complete d200959a3e91: Download complete 37fca75d01ff: Download complete 511136ea3c5a: Download complete 42eed7f1bf2a: Download complete c120b7cab0b0: Download complete f06b02872d52: Download complete 120e218dd395: Download complete 1f5049b3536e: Download complete bash-3.2$ docker run busybox /bin/echo Hello Doctor Hello Doctor 

我错过了什么吗?

当您使用boot2docker时,不需要像sudo那样运行任何boot2docker命令,因为每个传递到boot2docker虚拟机的命令默认都以root boot2docker运行。

当你作为sudo运行时,你会看到错误,因为sudo没有设置DOCKER_HOST env,只有你的用户。

你可以通过做一个确认:

 $ env 

然后a

 $ sudo env 

并在每个输出中寻找DOCKER_HOST

至于有一个运行你的脚本的docker文件,这样的东西可能适合你:

Dockerfile

 FROM busybox # Copy your script into the docker image ADD /path/to/your/script.sh /usr/local/bin/script.sh # Run your script CMD /usr/local/bin/script.sh 

然后你可以运行:

 docker build -t your-image-name:your-tag . 

这将build立您的docker图像,您可以通过执行以下操作来看到:

 docker images 

然后,运行你的容器,你可以做一个:

 docker run your-image-name:your-tag 

这个运行命令将从你用Dockerfile和你的build命令创build的映像启动一个容器,然后一旦你的script.sh执行完成,它就会完成。

您可以使用shellinit快速设置您的环境

在你的命令提示符下执行:

 $(boot2docker shellinit) 

这将填充和导出环境variables并初始化其他function。

在我的MAC上,当我在terminal上启动boot2docker-vm使用

 boot2docker start 

我看到以下

 To connect the Docker client to the Docker daemon, please set: export DOCKER_CERT_PATH= export DOCKER_TLS_VERIFY=1 export DOCKER_HOST=tcp://:2376 

设置这些环境variables后,我能够运行构build没有问题。

更新[2016-04-28]如果您使用的是Docker的最新版本,您可以执行此操作

eval $(docker-machine env)将设置环境

docker-machine env将打印出口报表)

如果docker service没有运行, docker pull会失败。 确保它正在运行

 :~$ ps aux | grep docker root 18745 1.7 0.9 284104 13976 ? Ssl 21:19 0:01 /usr/bin/docker -d 

如果它没有运行,你可以启动它

sudo service docker start

对于Ubuntu 15及以上使用

sudo systemctl start docker

我也有这个错误。 但是,我没有使用boot2docker,而是在Ubuntu上安装了“普通” docker (请参阅https://docs.docker.com/installation/ubuntulinux/ )。

我得到了错误(“拨号unix /var/run/docker.sock:没有这样的文件或目录。你是否尝试连接到启用TLS的守护进程没有TLS?”),因为docker守护程序没有运行

在Ubuntu上,你需要启动服务

 sudo service docker start 

另见http://blog.arungupta.me/resolve-dial-unix-docker-sock-error-techtip64

对于Windows上的boot2docker,看到以下内容:

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

我所做的只是:

 boot2docker start boot2docker shellinit 

这产生了:

 export DOCKER_CERT_PATH=C:\Users\vonc\.boot2docker\certs\boot2docker-vm export DOCKER_TLS_VERIFY=1 export DOCKER_HOST=tcp://192.168.59.103:2376 

最后:

 boot2docker ssh 

docker工再次工作

在Linux中,首先执行sudo service docker start在terminalsudo service docker start

如果您使用的是CentOS 7,并且您已经通过yum安装了Docker,请不要忘记运行:

 $ sudo systemctl start docker $ sudo systemctl enable docker 

这将启动服务器,并在启动时自动重新启动。

要设置您的环境并为将来的会话保留,您可以执行以下操作:

 echo 'export DOCKER_HOST="tcp://$(boot2docker ip 2>/dev/null):2375";' >> ~/.bashrc 

然后: source ~/.bashrc

而且您的环境将在每个会话中设置

第一个/var/run/docker.sock引用您的boot2docker虚拟机中的相同path。 Correcly写入Windows /var/run/docker.sock

你,也许不是OP,但是有人可能会有一个名为/var/run/docker.sock/的目录,这是因为你使用了多less次黑客和斜杠来使docker(特别是noobs)正确地工作。 删除该目录,然后重试。

这帮助我在CentOS 7上运行。