Docker:您是不是尝试连接到没有 TLS 的启用 TLS 的守护进程?

Posted

技术标签:

【中文标题】Docker:您是不是尝试连接到没有 TLS 的启用 TLS 的守护进程?【英文标题】:Docker: Are you trying to connect to a TLS-enabled daemon without TLS?Docker:您是否尝试连接到没有 TLS 的启用 TLS 的守护进程? 【发布时间】:2015-06-24 14:11:49 【问题描述】:

在具有内核 3.13.0-48-generic 和 OpenSSL 版本 1.0.1f-1ubuntu2.11 的 Linux Mint 17.1 x86_64 上;每当我尝试执行任何 docker 命令(如 docker logindocker run hello-world)时,都会出现以下错误:

FATA[0000] Get http:///var/run/docker.sock/v1.18/info: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS? 

我使用sudo usermod -aG docker username 创建了一个名为docker 的组,我尝试以root 和正常方式运行命令,按照here、restarted my PC 的指示将$(boot2docker shellinit 2> /dev/null) 添加到~/.profile 并重新安装了OpenSSL。

知道我错过了什么吗?这可能是硬件问题吗?

【问题讨论】:

你用的是mac os吗? boot2docker 适用于 mac。在我看来,您还没有启动 docker 守护进程。 docker 分两部分运行,守护进程在后台运行。然后使用 docker ps 或 docker run 连接到守护进程。连接时,您将 docker 作为客户端运行。所以,做一个 ps -ax | grep 码头工人。如果不存在,则执行 docker -d (或 sudo docker -d) 是的,现在可以了。出于某种原因,文档中似乎没有提到docker -d。顺便说一句,以docker -d & 运行它以便我拿回我的 shell 是否安全? 既然你使用的是 Mint,请寻找 docker server 的 upstart 脚本 重复Am I trying to connect to a TLS-enabled daemon without TLS? 【参考方案1】:

我在 CentOS 7 上部署了 docker,朋友先帮我检查了进程/服务docker 是否真的在运行。他使用了命令ps -ef | grep docker。事实证明,该过程根本没有运行。最后,他使用命令service docker start 开始了这个过程。最后,问题解决了。

【讨论】:

这正是重点。似乎根本不是“问题”。它只是需要运行 docker 守护进程才能工作 你使用的是 service docker start 还是 sudo service docker start? 或者在linux上注册为服务运行:#systemctl enable docker.service【参考方案2】:

按照https://docs.docker.com/linux/step_one/ 的步骤操作后遇到了同样的问题。 docker 服务正在运行,我还将用户添加到 docker 组。没有 sudo,docker 命令无法运行。

为我解决的问题是重新启动 PC。注意 - 在 PC 重新启动之前,我还尝试过停止和启动 docker 守护进程。我在 Ubuntu 12.04 上。

【讨论】:

【参考方案3】:

我通过在 sudo 模式下运行该命令来解决它,例如“须藤泊坞窗图像”

【讨论】:

【参考方案4】:
sudo chmod 777 /var/run/docker.sock

【讨论】:

虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。 chmod 777 赋予所有进程所有权限(读、写、执行),使用 777 是不好的做法,但它确实解决了你所说的问题@DonaldDuck chmod 777?哦不。【参考方案5】:

您可以通过运行命令ps -ef 来检查它是否已启动。如果您想减少结果数量,也可以将其 grep 到 docker(使用 | grep docker)。如果没有运行,执行

sudo service docker start

如果还是不行的话

你可以参考这个链接

docker docs

您可以运行docker run -ddocker run -d &,这样您就可以使用相同的终端,甚至关闭它。它将值设置为 true,因此您的容器将在后台以“分离”模式运行。

您也可以在您的操作系统使用update-rc.d servicename defaults 启动时自动启动它,或者您也可以参考下面的链接,您必须将docker 作为服务名称和您的默认值。

更多链接可供参考 - auto start, upstart

这些是不同的方法。

【讨论】:

【参考方案6】:

当 docker 服务无法启动时,可能会发生这种情况。 sudo service docker startrestart 没有返回输出并不意味着它启动成功。 您可以使用sudo /etc/init.d/docker status 找出它是否以及为什么无法启动。

在我的情况下,这是由于磁盘空间不足。

username@computer:~$ sudo service docker restart
username@computer:~$ sudo /etc/init.d/docker status
? docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: failed (Result: start-limit) since Mon 2015-12-21 15:11:59 PST; 21s ago
     Docs: http://docs.docker.com
  Process: 26463 ExecStart=/usr/bin/docker -d -H fd:// $DOCKER_OPTS (code=exited, status=1/FAILURE)
 Main PID: 26463 (code=exited, status=1/FAILURE)

Dec 21 15:11:59 computer docker[26463]: time="2015-12-21T15:11:59-08:00" level=info msg="Listening for HTTP on fd ()"
Dec 21 15:11:59 computer docker[26463]: time="2015-12-21T15:11:59-08:00" level=info msg="+job init_networkdriver()"
Dec 21 15:11:59 computer docker[26463]: time="2015-12-21T15:11:59-08:00" level=info msg="-job init_networkdriver() = OK (0)"
Dec 21 15:11:59 computer docker[26463]: time="2015-12-21T15:11:59-08:00" level=fatal msg="Shutting down daemon due to errors: Insertion failed because database is full: database or disk is full"
Dec 21 15:11:59 computer systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
Dec 21 15:11:59 computer systemd[1]: Unit docker.service entered failed state.
Dec 21 15:11:59 computer systemd[1]: docker.service failed.
Dec 21 15:11:59 computer systemd[1]: start request repeated too quickly for docker.service
Dec 21 15:11:59 computer systemd[1]: Failed to start Docker Application Container Engine.
Dec 21 15:11:59 computer systemd[1]: docker.service failed.

删除一些文件后,我能够重新启动服务并正常运行docker容器。

【讨论】:

【参考方案7】:

当我尝试关注一些在线资源时,我遇到了同样的问题;我可以通过以超级用户身份运行 docker 来解决此问题,尝试在您的 docker 命令之前添加 sudo

sudo docker ps -a

sudo docker run hello-world

希望对你有帮助。

【讨论】:

sudo docker [command] 在使用 Linux 时为我解决了这个问题。【参考方案8】:

当我从 Jenkins 创建 docker 映像时,我遇到了同样的问题,只需添加 用户到 docker 组,然后重新启动 docker 服务,在我的情况下,我必须重新启动 Jenkins 服务

这是我得到的错误

http:///var/run/docker.sock/v1.19/build?cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&memory=0&memswap=0&rm=1&t=59aec062a8dd8b579ee1b61b299e1d9d340a1340: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?
FATAL: Failed to build docker image from project Dockerfile
java.lang.RuntimeException: Failed to build docker image from project Dockerfile


Solution: 

[root@Jenkins ssh]# groupadd docker
[root@Jenkins ssh]# gpasswd -a jenkins docker
Adding user jenkins to group docker
[root@Jenkins ssh]# /etc/init.d/docker restart
Stopping docker:                                           [  OK  ]
Starting docker:                                           [  OK  ]
[root@Jenkins ssh]# /etc/init.d/jenkins restart
Shutting down Jenkins                                      [  OK  ]
Starting Jenkins                                           [  OK  ]
[root@Jenkins ssh]#

【讨论】:

【参考方案9】:

在我的情况下,这是因为文件 /Users/user/.ssh/config 的权限为 777。 检查它在终端ssh docker@localhost中运行

【讨论】:

【参考方案10】:

按照https://docs.docker.com/linux/step_one/ 的步骤操作后遇到了同样的问题。 docker 服务正在运行,我还将用户添加到 docker 组。没有 sudo,docker 命令无法运行。

为我解决的问题是重新启动 PC。 注意 - 在 PC 重新启动之前,我还尝试过停止和启动 docker 守护进程。我在 Ubuntu 12.04 上。

【讨论】:

更多关于 Ubuntu 的安装和配置说明可以在docs.docker.com/engine/installation/ubuntulinux找到。【参考方案11】:

今天早上遇到了同样的问题。你可能只想做service docker start。它适用于 centos(适用于所有人),它是我一直忘记的那些小问题之一。

从技术上讲,当您第一次安装诸如 docker 或 httpd (apache) 之类的服务时,它需要实际启动,否则您将收到该错误。你也可以通过service service_name status查看其他服务的状态,但我的centos 7也是这样。

【讨论】:

【参考方案12】:

尝试安装 apparmor

sudo apt install apparmor

还有其他事情要寻找in this answer。

【讨论】:

我在 ubuntu 12.04 上进行了全新安装(更新内核后),我不知道为什么会出现这个错误,我解决了安装 apparmor 这个答案需要更多的支持。 Ubuntu 的官方 Docker 安装说明缺少此步骤。我现在已经在干净的 Ubuntu 系统中安装了 Docker 三次(一次运行 12.04,两次运行 14.04)。每次我花一个小时在网上搜索时,都会偶然发现这个 SO 答案!

以上是关于Docker:您是不是尝试连接到没有 TLS 的启用 TLS 的守护进程?的主要内容,如果未能解决你的问题,请参考以下文章

无法连接到docker mongodb

尝试使用启用了 TLS 的连接的 python 连接到 Sybase 和 Azure SQL 服务器

Java 邮件无法使用 tls 或 ssl 连接到 smtp

无法使用 ngrok 连接到 https://localhost(使用 TLS / SSL)

自 SSL/TLS 证书更新以来,Django 应用程序未连接到 RDS

Docker 无法使用 PHP 连接到 mariadb