我试图学习Docker,但我一直收到(对我来说)神秘的错误消息。

可能最简单的例子是试图打印我安装的Docker版本:

$ sudo docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): darwin/amd64
FATA[0000] Get http:///var/run/docker.sock/v1.16/version:
    dial unix /var/run/docker.sock: no such file or directory.
    Are you trying to connect to a TLS-enabled daemon without TLS?

我刚刚浏览了用户指南并严格遵循了每一步,所以我很惊讶我得到了这个消息……我现在该怎么办?

我刚刚注意到,如果我不使用sudo,我不会得到错误:

$ docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): darwin/amd64
Server version: 1.4.1
Server API version: 1.16
Go version (server): go1.3.3
Git commit (server): 5bc2ff8

当然,这不是一个解决方案,因为我可能需要在某个地方使用sudo。

我刚发现另一个页面说“如果你使用OS X,那么你不应该使用sudo。”我不知道他们是指这个例子,还是一般情况。


当前回答

以我为例(Linux Mint 17),我做了各种各样的事情,我不确定其中哪些是完全必要的。

我将丢失的Ubuntu包包括在内:

$ sudo apt-get install apparmor lxc cgroup-lite

日志含义向组docker添加用户。

$ sudo usermod -aG docker ${USER}

启动守护进程(openSUSE只需要这个)

$ sudo docker -d

谢谢\归因


谢谢乌斯曼·伊斯梅尔,因为也许这只是最后一件事…

愚蠢的问题,你启动docker守护程序了吗?- Usman Ismail 12月17日15:04


还要感谢github@MichaelJCole为我提供的解决方案,因为当我阅读乌斯曼的评论时,我没有检查守护进程。

GitHub的评论:

sudo apt-get install apparmor lxc cgroup-lite
sudo apt-get  install docker.io
# If you installed docker.io first, you'll have to start it manually
sudo docker -d
sudo docker run -i -t ubuntu /bin/bash

感谢fredjean.net的帖子注意到丢失的包,忘记了默认的Ubuntu安装说明和谷歌关于其他方法

在Linux Mint上,缺省情况下没有安装cgroup-lite和lxc包。安装这两个程序后,我可以在基本映像中运行bash,然后构建并运行我的映像。


感谢brettof86对openSUSE的评论

其他回答

你需要做的是:

$boot2docker init
$boot2docker start

以下设置修复了这个问题:

$export DOCKER_HOST=tcp://192.168.59.103:2376
$export DOCKER_CERT_PATH=/Users/{profileName}/.boot2docker/certs/boot2docker-vm
$export DOCKER_TLS_VERIFY=1

您可能还没有访问该文件的权限。 这发生在我把自己添加到dockergroup使用

sudo gpasswd -a user docker

但还没有注销。

要解决这个问题,您可以重新登录或使用 Sg docker "docker <subcommand>…"

如果您在/etc/group中的docker组中,您应该能够在不输入密码的情况下运行它。

https://dingyichen.wordpress.com/2015/02/05/docker-dial-unix-varrundocker-sock-no-such-file-or-directory-are-you-trying-to-connect-to-a-tls-enabled-daemon-without-tls/

我在MacOS上得到了同样的错误与sudo和没有它。

我已经解决了这个问题:

boot2docker start
$(boot2docker shellinit)

附注:多亏了艾伦。我发现这种方法在他们的官方文件中是推荐的。

P.S.2:有时在运行两个命令之前需要boot2docker init(谢谢Aaron)。

对我来说,以下步骤是有效的:

我注意到,运行docker运行hello-world失败与这个袜子错误的问题,但运行sudo docker运行hello-world工作。 我将我的当前用户添加到docker组,sudo adduser user docker。然后必须重新启动计算机或使用su - user(如果在docker组中,请使用groups命令检查)。

在那之后,hello-world开始工作。

我的答案是基于我如何使用docker没有sudo?这就解释了问题所在。


我遇到了同样的问题,并尝试了各种方法来解决这个问题,修改.bash_profile文件,登录和退出,但没有任何运气。最后,重启我的机器解决了这个问题。