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


当前回答

TLDR:这让我的Python聚会小组克服了这个问题,当时我正在运行一个关于安装docker的诊所,大多数用户都在OS X上:

boot2docker init
boot2docker up

然后运行输出提供的导出命令

docker info

应该会告诉你它有用。


背景(是什么导致了我们的问题)

我主持了一个关于安装docker的诊所,大多数参与者都使用OS X,我们遇到了这个问题,我在几台机器上克服了这个问题。以下是我们遵循的步骤:

首先,我们安装了自制啤酒(是的,一些与会者没有):

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

然后我们得到了cask,我们用它来安装virtualbox,然后用brew来安装docker和boot2docker(都是OS X所需的)。

brew install caskroom/cask/brew-cask
brew cask install virtualbox
brew install docker
brew install boot2docker

解决方案

这时我们遇到了这位提问者遇到的问题。下面的问题得到了解决。我知道init是一次性的交易,但你可能每次启动docker都要运行:

boot2docker init
boot2docker up

然后,当运行up时,它给出几个导出命令。复制粘贴并运行。

最后,docker信息应该告诉你它已经正确安装。

演示

其余的命令应该演示它。(在Ubuntu linux上,我需要sudo。)

docker run hello-world
docker run -it ubuntu bash

然后你应该在容器的根壳上:

apt-get install nano
exit

回到您的本地用户bash:

docker ps -l

在“容器ID”下查找大约12位十六进制(0-9或a-f)标识符,例如456789abcdef。然后你可以提交你的变更,并给它起一个描述性的名字,比如descriptivename:

docker commit 456789abcdef descriptivename`

其他回答

我也有同样的问题。一个简单的服务docker重启就解决了这个问题。

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

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守护进程套接字。

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

确保有

127.0.0.1    localhost

在你的

`/etc/hosts `

文件。

您可能还没有访问该文件的权限。 这发生在我把自己添加到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/