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

标签 linux docker virtual-machine virtualbox

我正在执行 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?"

当运行“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 后立即运行 docker run hello-world

最佳答案

请注意错误消息中紧接在 Are you try to connect to a tls-enabled daemon without TLS 之前的文本。在这里问的问题是permission denied,但也可能是no such file or directory(或者可能是其他)。前者更可能是当前用户缺少访问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) 但是当我在 user 下运行它时 docker 命令仍然不起作用,而它正在运行在sudo下很好。我忘记做的是将 user 添加到 docker 组后注销并重新登录,这是组成员资格生效所必需的步骤。

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

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

关于linux - Docker 在安装后首次运行时失败。错误发布 http ://. ....权限被拒绝。您是否尝试在没有 TLS 的情况下连接到支持 TLS 的守护进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31463867/

相关文章:

virtual-machine - 在 GCE 上创建 VM 实例的镜像

debugging - 在VM 环境中调试Open AM 有哪些好的技巧?

C 程序(编译为 fcgi)给出 500 内部错误

linux - 我如何提供从 rpm 向用户保存数据的选项?

docker - 与 Ubuntu 相比,为什么 SLES 12 上的 docker 容器占用 2 倍内存?

无法在 ubuntu 14.04 上安装 Docker

windows-7 - 允许所有用户访问虚拟计算机。虚拟机 + Ubuntu

c - 我必须包含哪个头文件才能在内核源文件中获取 printk()?

c - 对 pthread_create 和 pthread_join 的 undefined reference

postgresql - 使用 unix 域套接字从 docker 容器连接到 Postgresql 是不是很糟糕?