升级到lxc-docker后,拨号unix /var/run/docker.sock失败:找不到文件或目录

16

当我最初安装Docker时,它显示为版本1.0.1。鉴于当前版本为1.4.1,我找到并执行了以下指令:

$ sudo apt-get update

$ sudo apt-get install docker.io

$ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9

$ sudo sh -c "echo deb https://get.docker.io/ubuntu docker main \
> /etc/apt/sources.list.d/docker.list"
$ sudo apt-get update
$ sudo apt-get install lxc-docker

现在,当我运行docker version时,我得到的版本是1.4.1,但是docker不再工作了,它给了我这个错误:

root@8dedd2fff58e:/# 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): linux/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? 

我该怎么做才能修复这个问题,但仍保留最新的Docker版本1.4.1?


有运气了吗?遇到同样的问题了... - nathan g
在我的情况下,明确在tcp上启动docker有所帮助,而不是使用.sock:sudo docker -H my_ip:2365 -d &。详细信息在此处描述:https://docs.docker.com/articles/basics/。 - Eugene Goldberg
抱歉 - 端口实际上是2375,而不是2365。 - Eugene Goldberg
5个回答

27

当您启动docker服务时,/var/run/docker目录将被创建:

systemd:

sudo systemctl start docker

upstart:

sudo service docker start

init.d:

sudo /etc/init.d/docker start

如果出现以下错误,则可能需要执行此操作: FATA[0000] Cannot connect to the Docker daemon. Is 'docker -d' running on this host?


当我运行服务docker status时,我收到了以下信息:docker未运行。当我运行服务docker start时,我收到了以下信息:mount: permission denied。 - Eugene Goldberg
你使用了 sudo 命令还是以 root 用户身份启动的? - Michael

16

我在Mac OS X上遇到了相同的问题。在这里提供我的解决方法,希望能帮到有需要的人:

  1. 运行“Docker Quick Start Terminal”
  2. 在目标目录中运行 eval "$(docker-machine env default)"

这个方法对我来说解决了问题。


对我有用... eval "$(docker-machine env default)" 是做什么的? - Robbo_UK
1
@Robbo_UK docker-machine env default 很可能会在一个 EXPORT 语句中回显一堆环境变量,而 eval 在当前 shell 中运行。 - Angad

3
我遇到了同样的问题,我在这里找到了解决方案:https://docs.docker.com/articles/basics/
回到基础总是好的。
问题可能是您正在运行不同的端口而不是默认套接字(unix:///var/run/docker.sock)。
如果运行“ps aux | grep docker”,您应该看到守护程序正在运行。在docker进程的行末,您还应该看到一个参数-H={IpAddress}:{Port}。您还应该看到证书存储的路径(--tls参数)。
您必须指示docker连接到-H参数中指定的TCP地址。
例如:
`docker --tls -H tcp://{IpAddress}:{Port} version`

注意--tls参数,如果您指示docker在安全模式下运行,则这是必需的。

您可以通过设置环境变量来避免命令的冗长。

export DOCKER_HOST="tcp://{IpAddress}:{Port}"
export DOCKER_TLS_VERIFY="1"

希望这可以帮助到您。。

1

Docker是否作为守护进程启动?

使用 service docker.io statusservice docker status 查看。

如果没有启动,则启动并进行操作。


当我运行服务docker status时,我得到了以下信息:docker未运行。而当我运行服务docker start时,我得到了以下信息:mount: 权限被拒绝。 - Eugene Goldberg
那么你需要sudo权限。 - Diego Velez
我以 root 用户身份运行了这个。 - Eugene Goldberg

0
在全新的 M1 MacBook 上,我遇到了这个问题。令人惊讶的是,解决方案只是使用我的 Docker 帐户详细信息登录应用程序。一旦我这样做了,我重新运行了失败的命令,它就起作用了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接