【问题标题】: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 和正常方式运行命令,按照hererestarted 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 脚本

标签: linux ubuntu docker daemon linux-mint


【解决方案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 上。

              【讨论】:

              【解决方案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 答案!
                猜你喜欢
                • 1970-01-01
                • 2015-02-16
                • 1970-01-01
                • 2015-06-03
                • 1970-01-01
                • 2017-03-01
                • 2018-11-08
                • 1970-01-01
                • 2022-07-07
                相关资源
                最近更新 更多