我试图学习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。”我不知道他们是指这个例子,还是一般情况。


当前回答

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

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

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

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


其他回答

对我来说,运行$(boot2docker shellinit 2> /dev/null)可以解决这个问题。

这将运行boot2docker shellinit命令的输出(三个set -x…这让docker命令知道在哪里可以找到boot2docker虚拟机。

将$(boot2docker shellinit 2> /dev/null)添加到~/的底部。Bash_profile文件将确保每次打开终端时都配置了docker命令。


对于使用Fish shell的人:boot2docker shellinit ^ /dev/null | source。


注意,2> /dev/null(和Fish等价的^ /dev/null)是可选的。就像@pablo-fernandez建议的那样,这隐藏了写作。行。

Docker calls itself a self-sufficient runtime for Linux containers. In simple terms it acts both as server and client. The $ docker version command query is internal to the Docker executable and not to the daemon/service running. $ docker images or $ docker ps or $ docker pull centos are commands which send queries to the docker daemon/service running. Docker by default supports TLS connections to its daemon/service. Only if the user you are logged in as is part of user group docker or you have used sudo before the command, e.g. $ sudo docker images, does it not require TLS connectivity.

访问Docker文档保护Docker守护进程套接字。

滚动一点到顶部,找到警告部分的清晰度。

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

我已经解决了这个问题:

boot2docker start
$(boot2docker shellinit)

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

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

确保有

127.0.0.1    localhost

在你的

`/etc/hosts `

文件。

另一个可能的原因是您的BIOS CPU可视化没有启用。先去启用它吧!