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


86

我是Docker的新手。我有一个将数据加载到impala中的shell脚本,并且我想要运行的docker文件构建映像并运行容器。我在Mac上,安装了boot2docker并DOCKER_HOST设置了环境。

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设置有问题吗?

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

我想念什么吗?


我有同样的问题。我重启了笔记本电脑。所以它开始为我工作。(请参阅docs.docker.com/installation/ubuntulinux)他们还提到了重新启动计算机。
NehaG 2015年

当我连接到互联网时为我工作,我不知道为什么会这样:(
塞拉姆

Answers:


87

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

sudo由于sudo没有DOCKER_HOST设置环境,只有用户才看到,因此在运行时会看到错误。

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

$ env

然后一个

$ sudo env

DOCKER_HOST在每个输出中寻找。

至于运行您的脚本的docker文件,类似这样的方法可能对您有用:

Docker文件

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映像,您可以通过执行以下操作看到:

docker images

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

docker run your-image-name:your-tag

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


1
对不起,我很无知,但我认为我没有成功建立自己的公司。“ docker images”:给出2014/08/19 11:11:45获取http:///var/run/docker.sock/v1.13/images/json:拨打unix /var/run/docker.sock:否这样的文件或目录。码头工人应该放置在主目录中吗,可以用任何名称命名吗?与“图像名称”相同吗?
user1189851 2014年

您可以粘贴用于构建docker映像的命令吗?听起来好像您不应该在OSX机器上仍在使用sudo。
克里斯·麦金奈尔

$ docker build -t /用户/ ig / Documents / tests / hellodocker。2014/08/19 11:18:09无效的名称空间名称(),仅允许[a-z0-9_],大小在4到30之间;hellodocker只是您提供的dockerfile的内容。非常感谢。
user1189851 2014年

是的,你正在试图用一个文件路径来标记您的码头工人形象-后尝试别的东西-t一样your-image-name:a-tag
克里斯·麦金尼尔

你能给我命令行吗,请。我搞砸了 我的docker文件是hellodocker,路径在上面给出。
user1189851 2014年

45

您可以使用以下方法快速设置环境 shellinit

在命令提示符下执行:

$(boot2docker shellinit)  

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


26

在我的MAC上,当我使用以下命令在终端上启动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

设置完这些环境变量后,我可以运行构建而不会出现问题。

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

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

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


2
您也可以将这些添加到终端配置文件中以节省时间。虚拟机将通知您它们已经设置。
Joe Susnick

25

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


16

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

我收到错误消息(“ dial unix /var/run/docker.sock:无此类文件或目录。您是否尝试连接到没有TLS的启用TLS的守护程序?”),因为docker守护程序尚未运行

在Ubuntu上,您需要启动服务

sudo service docker start

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


9

对于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

码头工人再次工作



5

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

$ sudo systemctl start docker
$ sudo systemctl enable docker

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


4

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

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

然后: source ~/.bashrc

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


0

第一个/var/run/docker.sock引用boot2docker虚拟机中的相同路径。正确地为Windows /var/run/docker.sock编写


您可以在此处添加更多说明吗?另外,我认为用户使用的是Mac。
2ps,2016年

0

您,也许不是OP,但/var/run/docker.sock/由于您为使do​​cker(尤其是noobs)正确操作而砍刀和斜杠的次数很多,因此某人可能已经有一个已被调用的目录。删除该目录,然后重试。

这帮助我在Centos 7上运行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.