Docker 安装后首先 运行 失败。错误 Post http://..... 权限被拒绝。您是否尝试在没有 TLS 的情况下连接到支持 TLS 的守护进程?
Docker fails at first run after install. Error Post http://..... permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?
我正在执行 this docker 教程的第一步。
我已经在虚拟机虚拟机上安装了 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?"
当 运行ning "sudo docker run hello-world
" 我得到响应:
Cannot connect to the Docker daemon. Is 'docker -d' running on this host?
有人可以向我解释发生了什么以及如何解决吗?
谢谢。
编辑:我尝试遵循 Linux here
的解决方案
然而,
我曾尝试按照 El Mesa 的指示进行操作 post。但是,当我到达 运行ning sudo docker -d 时,出现错误 运行ning DeviceCreate (createPool) dm_task_run 失败。我认为我不需要启动任何东西,因为我只是按照教程学习,而教程只是在安装 docker
后立即 docker 运行 hello-world
可能是您的 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 守护程序,就像这里的情况一样,那么 docker 守护程序可以通过编辑 /etc/rc.local
来在启动时自动启动所以。在 exit
行之前添加下面的行。这将派生一个新的 bash shell,等待 30 秒让网络设置等完成,然后启动 docker 守护程序。 sudo
在这里是不必要的,因为 /etc/rc.local
运行为 root
。
( sleep 30; /usr/sbin/service docker start ) &
请注意错误消息中紧接在之前的文本是否正在尝试连接到启用 TLS 的守护程序而不使用 TLS。在此处提出的问题中,它是 permission denied,但也可能是 no such file or directory(或可能是其他内容)。前者更可能是指当前用户缺少访问docker的权限,后者更可能是指docker服务本身有问题,包括有可能是docker根本不是 运行。
所以根据你的情况寻找关于这个和
linked question 侧重于相应问题区域的页面。
在我的例子中(CentOS Linux 版本 7.1.1503(核心),docker-1.7.1-108.el7.centos.x86_64)它是 权限被拒绝。我已经将用户添加到 docker 组(sudo usermod -a -G docker user)但是 docker 命令仍然不起作用运行 它在 user 下,而它 运行 在 sudo 下很好。我忘记做的是在将 user 添加到 docker 组后将其注销并重新登录,这是组成员资格生效所必需的步骤。
重新启动机器也可以解决这个问题,但这是一个更激烈的步骤并且会起作用,因为这将意味着注销/登录步骤。我建议在重新启动之前尝试注销并重新登录,因为如果它有效,它会让您更有信心组成员身份是实际问题。如果它不起作用,您可以随时尝试重新启动,但如果它在之后起作用,它可能会起作用,因为重新启动可以解决其他一些潜在问题。
还有一件事,以防你遇到它并发现自己有疑问 - 当你第一次安装 docker 并希望将用户添加到 docker 组时,你可能会注意到(正如我在我的例子中做了) "dockerroot" 组存在但 "docker" 组不存在。不要将用户添加到 dockerroot 组,假设这是你需要的。而是创建新的 docker 组并将用户添加到其中。
我正在执行 this docker 教程的第一步。 我已经在虚拟机虚拟机上安装了 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?"
当 运行ning "sudo docker run hello-world
" 我得到响应:
Cannot connect to the Docker daemon. Is 'docker -d' running on this host?
有人可以向我解释发生了什么以及如何解决吗? 谢谢。
编辑:我尝试遵循 Linux here
的解决方案然而,
我曾尝试按照 El Mesa 的指示进行操作 post。但是,当我到达 运行ning sudo docker -d 时,出现错误 运行ning DeviceCreate (createPool) dm_task_run 失败。我认为我不需要启动任何东西,因为我只是按照教程学习,而教程只是在安装 docker
后立即 docker 运行 hello-world可能是您的 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 守护程序,就像这里的情况一样,那么 docker 守护程序可以通过编辑 /etc/rc.local
来在启动时自动启动所以。在 exit
行之前添加下面的行。这将派生一个新的 bash shell,等待 30 秒让网络设置等完成,然后启动 docker 守护程序。 sudo
在这里是不必要的,因为 /etc/rc.local
运行为 root
。
( sleep 30; /usr/sbin/service docker start ) &
请注意错误消息中紧接在之前的文本是否正在尝试连接到启用 TLS 的守护程序而不使用 TLS。在此处提出的问题中,它是 permission denied,但也可能是 no such file or directory(或可能是其他内容)。前者更可能是指当前用户缺少访问docker的权限,后者更可能是指docker服务本身有问题,包括有可能是docker根本不是 运行。
所以根据你的情况寻找关于这个和 linked question 侧重于相应问题区域的页面。
在我的例子中(CentOS Linux 版本 7.1.1503(核心),docker-1.7.1-108.el7.centos.x86_64)它是 权限被拒绝。我已经将用户添加到 docker 组(sudo usermod -a -G docker user)但是 docker 命令仍然不起作用运行 它在 user 下,而它 运行 在 sudo 下很好。我忘记做的是在将 user 添加到 docker 组后将其注销并重新登录,这是组成员资格生效所必需的步骤。
重新启动机器也可以解决这个问题,但这是一个更激烈的步骤并且会起作用,因为这将意味着注销/登录步骤。我建议在重新启动之前尝试注销并重新登录,因为如果它有效,它会让您更有信心组成员身份是实际问题。如果它不起作用,您可以随时尝试重新启动,但如果它在之后起作用,它可能会起作用,因为重新启动可以解决其他一些潜在问题。
还有一件事,以防你遇到它并发现自己有疑问 - 当你第一次安装 docker 并希望将用户添加到 docker 组时,你可能会注意到(正如我在我的例子中做了) "dockerroot" 组存在但 "docker" 组不存在。不要将用户添加到 dockerroot 组,假设这是你需要的。而是创建新的 docker 组并将用户添加到其中。