Docker在安装后首次运行失败。错误发布http:// .....权限被拒绝。您是否尝试在没有TLS的情况下连接到启用TLS的守护程序?

时间:2015-07-16 20:24:30

标签: linux docker virtual-machine virtualbox

我正在执行this码头工程教程的第一步。 我在虚拟机vm上安装了ubuntu 14.04版。 我故意通过docker版本降级,以便在我键入" docker version"我得到客户端版本:1.5.0。这是因为我打算与之通信的服务器是1.5.0。

尝试命令" docker run hello-world"我得到了答复:

"Post http:///var/run/docker.sock/v1.17/containers/create: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?"

运行" sudo docker run hello-world"我得到了答复:

Cannot connect to the Docker daemon. Is 'docker -d' running on this host?

有人可以向我解释一下发生了什么以及如何解决这个问题? 感谢。

编辑:我尝试按照Linux here

的解决方案进行操作

然而,

我曾尝试在该帖子中关注El Mesa的说明。但是,当我运行sudo docker -d时,我遇到运行DeviceCreate(createPool)的错误dm_task_run失败。我不认为我需要启动任何东西,因为我只是按照教程和教程刚刚在安装docker之后立即运行hello-world

2 个答案:

答案 0 :(得分:1)

请注意紧接在之前的文本您是否尝试连接到错误消息中没有TLS 的启用TLS的守护程序。在这里提出的问题是权限被拒绝,但它也可能没有这样的文件或目录(或可能是别的东西)。前者更可能意味着当前用户缺乏访问docker的权限,而后者更可能意味着docker服务本身存在问题,包括它根本不运行的可能性。

因此,根据您的情况,寻找答案和答案 linked question页面专注于各自的问题区域。

在我的情况下(CentOS Linux版本7.1.1503(Core),docker-1.7.1-108.el7.centos.x86_64),权限被拒绝。我已将用户添加到docker组(sudo usermod -a -G docker user )但是当我在 user 下运行它时,docker命令仍无法正常工作在sudo下很好。我忘记做的是在将用户添加到docker组之后将其记录下来并重新登录,这是组成员身份生效所必需的步骤。

重新启动计算机也将解决此问题,但这是一个更激烈的步骤,并且将起作用,因为它将意味着退出/登录步骤。我建议在重新启动之前尝试注销并重新登录,因为如果它有效,它将使您更有信心组成员身份是实际问题。如果它不起作用你总是可以尝试重新启动,但如果它在那之后工作它可能会起作用,因为重新启动会解决其他一些潜在的问题。

还有一件事,如果你遇到它并发现自己有疑问 - 当你第一次安装docker并希望将用户添加到docker组时,你可能会注意到(就像我在我的情况下那样)“dockerroot”组存在但不是“docker”组。假设这是您需要的用户,请不要将用户添加到dockerroot组。而是创建新的docker组并将用户添加到其中。

答案 1 :(得分:0)

可能是您的docker守护程序未运行。

我在桌面上安装了无线局域网的ubuntu / docker。

与docker工作正常的有线计算机相比,它有点挑剔,并且复制了您报告的错误消息:

$ docker run -it ubuntu:latest /bin/bash
FATA[0000] Post http:///var/run/docker.sock/v1.17/containers/create: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS? 

然而,在跑完之后:

sudo service docker start

它的行为正确(至少在主机重启之前):

$ docker run -it ubuntu:latest /bin/bash
root@2cea4e5f5028:/# 

如果系统未在启动时启动docker守护程序(如此处所示),则可以通过编辑/etc/rc.local来自动启动docker守护程序以执行此操作。在exit行之前添加以下行。这将分叉一个新的bash shell,等待30秒进行网络设置等,然后解决,并启动docker守护进程。此处不需要sudo,因为/etc/rc.local运行为root

( sleep 30; /usr/sbin/service docker start ) &