我试图学习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。”我不知道他们是指这个例子,还是一般情况。
您可能还没有访问该文件的权限。
这发生在我把自己添加到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/
对我来说,运行$(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建议的那样,这隐藏了写作。行。
您可能还没有访问该文件的权限。
这发生在我把自己添加到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/