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

时间:2014-08-18 22:04:26

标签: docker boot2docker

我是码头工人的新手。我有一个shell脚本将数据加载到impala中,我想要一个运行的docker文件构建一个映像并运行容器。 我在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]

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

sudo docker pull busybox

我收到此错误:

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

我的码头设置有问题吗?

当我执行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

我错过了什么吗?

11 个答案:

答案 0 :(得分:86)

当您使用sudo时,不需要以boot2docker运行任何docker命令,因为默认情况下,传递到boot2docker VM的每个命令都以root身份运行。

当您以sudo的身份运行时,您会看到错误,因为sudo没有设置DOCKER_HOST env,只有您的用户才这样做。

您可以通过执行以下操作来确认:

$ env

然后一个

$ 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 .

这将构建您的泊坞窗图像,您可以通过执行以下操作来查看:

docker images

然后,要运行容器,您可以执行以下操作:

docker run your-image-name:your-tag

此运行命令将从您使用Dockerfile和构建命令创建的映像启动容器,然后在script.sh执行完毕后完成。

答案 1 :(得分:45)

您可以使用shellinit

快速设置环境

在命令提示符下执行:

$(boot2docker shellinit)  

这将填充并导出环境变量并初始化其他功能。

答案 2 :(得分:25)

当我使用

在终端上启动boot2docker-vm时,在我的MAC上

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

设置完这些环境变量后,我能够毫无问题地运行构建。

更新[2016-04-28] 如果您使用的是最新版本的泊坞窗,您可以

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

docker-machine env将打印导出语句)

答案 3 :(得分:24)

如果docker pull未运行,

docker service将失败。确保它正在运行

:~$ 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

答案 4 :(得分:16)

我也遇到了这个错误。虽然,我没有使用boot2docker 但只是在Ubuntu上安装了“plain”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

答案 5 :(得分:9)

对于Windows上的boot2docker,看到后:

split(/\s*[,\/]\s*|\s+/);

我所做的只是:

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

码头工人再次工作

答案 6 :(得分:6)

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

答案 7 :(得分:5)

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

$ sudo systemctl start docker
$ sudo systemctl enable docker

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

答案 8 :(得分:4)

要设置环境并将其保留在以后的会话中,您可以执行以下操作:

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

然后: source ~/.bashrc

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

答案 9 :(得分:0)

第一个/var/run/docker.sock引用boot2docker虚拟机中的相同路径。 Correcly写的是windows /var/run/docker.sock

答案 10 :(得分:0)

你,也许不是OP,但有人可能有一个名为/var/run/docker.sock/的目录,因为你有多少次黑客攻击和砍伐以使用docker(特别是noobs)来解决问题。删除该目录,然后重试。

这帮助我开始在Centos 7上工作。