Docker 无法连接到 docker 守护进程

2024-10-10 08:38:00
admin
原创
78
摘要:问题描述:在我将 Docker 版本更新到 之后0.8.0,输入 时收到一条错误消息sudo docker version:Client version: 0.8.0 Go version (client): go1.2 Git commit (client): cc3a8c8 2014/02/19 12:5...

问题描述:

在我将 Docker 版本更新到 之后0.8.0,输入 时收到一条错误消息sudo docker version

Client version: 0.8.0
Go version (client): go1.2
Git commit (client): cc3a8c8
2014/02/19 12:54:16 Can't connect to docker daemon. Is 'docker -d' running on this host?

我按照说明输入了命令sudo docker -d,得到了以下结果:

[/var/lib/docker|2462000b] +job initserver()
[/var/lib/docker|2462000b.initserver()] Creating server
open /var/lib/docker/aufs/layers/cf2414da53f9bcfaa48bc3d58360d7f1cfd3784e4fe51fbef95197709dfc285d: no such file or directory[/var/lib/docker|2462000b] -job initserver() = ERR (1)
2014/02/19 12:55:57 initserver: open /var/lib/docker/aufs/layers/cf2414da53f9bcfaa48bc3d58360d7f1cfd3784e4fe51fbef95197709dfc285d: no such file or directory

我该如何解决这个问题?


解决方案 1:

Linux

Linux 文档的安装后步骤揭示了以下步骤:

  1. 创建docker组。

sudo groupadd docker
  1. 将用户添加到docker组。

sudo usermod -aG docker $(whoami)
  1. 注销并重新登录以确保 docker 以正确的权限运行。

  2. 启动docker。

sudo 服务 docker 启动

Mac OS X

正如Dayel Ostraco所说,需要添加环境变量:

docker-machine start # Start virtual machine for docker
docker-machine env  # It's helps to get environment variables
eval "$(docker-machine env default)" # Set environment variables

docker-machine start命令输出注释来指导该过程。

解决方案 2:

Linux

要在 Linux 上运行 docker daemon(从CLI),请运行:

$ sudo service docker start # Ubuntu/Debian

注意:$复制粘贴时跳过该字符。

在 RedHat/CentOS 上,运行:sudo systemctl start docker

要初始化“基本”文件系统,请运行:

$ sudo service docker stop
$ sudo rm -rf /var/lib/docker
$ sudo service docker start

或者手动操作:

$ sudo docker -d --storage-opt dm.basesize=20G

docker-machine在 Linux 上安装

要在 Linux 上安装机器二进制文件:

  • 本地:

install -vm755 <(curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) $HOME/bin/docker-machine
  • 全球的:

sudo bash -c 'install -vm755 <(curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) /usr/local/bin/docker-machine'

macOS

在 macOS 上,docker二进制文件只是一个客户端,您不能使用它来运行 docker 守护进程,因为 Docker 守护进程使用 Linux 特定的内核功能,因此您无法在 OS X 中本地运行 Docker。所以您必须安装docker-machine才能创建 VM 并连接到它。

docker-machine在 macOS 上安装

如果您还没有docker-machine命令,请使用以下方法之一进行安装:

  • 使用Brew命令:brew install docker-machine docker

  • 从GitHub手动获取:

install -v <(curl https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) /usr/local/bin/docker-machine

请参阅:开始使用 Docker for Mac。

docker-machine在 macOS 上配置

要通过 Homebrew 启动Docker Machine,请运行:

brew services start docker-machine

要创建default机器(如果您没有,请参阅docker-machine ls:):

docker-machine create --driver virtualbox default

然后为 Docker 客户端设置环境:

eval "$(docker-machine env default)"

然后通过列出容器进行双重检查:

docker ps

请参阅:开始使用 Docker Machine 和本地 VM。


在 macOS 上安装Docker.app

除了上述解决方案之外,您还可以通过以下方式安装 Docker 应用程序:

brew cask install docker

更多详情请查看此文章。另请参阅:无法连接到 macOS 上的 Docker 守护程序

解决方案 3:

如果您在 OS X 上运行 Docker,则运行以下 eval 对我来说是有效的。

eval "$(docker-machine env default)"

如果您不想在每个终端会话中都运行此 eval 语句,则可以将其添加到bash_profile

#Docker
eval "$(docker-machine env default)"

请务必重新启动终端会话或运行 source onbash_profile以使更改生效。

解决方案 4:

经过详细调查,这个问题似乎每次在 Mac OS X 重新启动(或 Docker 虚拟机重新启动)后都会发生,导致 Docker 客户端无法连接到 Docker 守护程序。

要解决该问题,您可以:

A)使用官方安装程序(https://www.docker.com/products/docker-toolbox)重新安装 Docker Toolbox,或者直接

B) 按顺序运行以下命令:

# First make sure that the virtual machine is running
docker-machine start default

# Regenerate TLS connection certs, requires confirmation
docker-machine regenerate-certs default

# Finally, set env
eval "$(docker-machine env default)"

C)与(B)相同,您也可以复制并粘贴以下行来运行所有三个命令:

docker-machine start default; docker-machine regenerate-certs default; eval "$(docker-machine env default)"

如果您收到以下错误:

Error getting SSH command: Something went wrong running an SSH command!
command : cat /etc/os-release
err     : exit status 255
output  :

只需再次重新运行这三个命令,它应该第二次就可以起作用。

解决方案 5:

这通常发生在您不在该docker群组时。您可以docker使用以下方式将自己添加到群组:

sudo usermod -aG docker yourusername

或者

sudo usermod -aG docker $(whoami)

此后,您需要注销并重新登录服务器。

或者,您可以使用sudo每个 Docker 命令。

解决方案 6:

如果上述所有其他解决方案均不起作用,您可以尝试检查以下所有权/var/run/docker.sock

ls -l /var/run/docker.sock

如果您不是所有者,则使用以下命令更改所有权:

sudo chown *your-username* /var/run/docker.sock

然后你就可以继续尝试轻松执行 Docker 命令了 :D

解决方案 7:

您可以使用命令

sudo service docker stop && sudo service docker start

或者

sudo service docker restart

只需重新启动它即可。

解决方案 8:

找出 Docker 无法正常工作的最好方法是手动运行守护进程。

$ sudo service docker stop
$ ps aux | grep docker  # do this until you don't see /usr/bin/docker -d
$ /usr/bin/docker -d

Docker 守护进程将日志记录到 STDOUT,因此它将开始输出其正在执行的任何操作。

我的问题如下:

[8bf47e42.initserver()] Creating pidfile
2015/01/11 15:20:33 pid file found, ensure docker is not running or delete /var/run/docker.pid

这是因为该实例是从另一个虚拟机克隆的。我只需删除 pidfile,然后一切就都正常了。

当然,我建议不要盲目地认为这会起作用,而是再手动运行一次守护进程,并在重新启动服务之前检查日志输出中是否存在任何其他错误。

解决方案 9:

执行 aps aux | grep docker来查看守护进程是否正在运行。如果没有运行/etc/init.d/docker start

解决方案 10:

使用Docker CE 应用

macOS

使用适用于 macOS 的新Docker 社区版应用程序。例如:

  1. 卸载迄今为止安装的所有 Docker Homebrew 软件包:

 brew uninstall docker-compose
 brew uninstall docker-machine
 brew uninstall docker
  1. 手动或通过Homebrew-Cask安装应用程序:

 brew install --cask docker

注意:此应用程序将创建docker、、docker-compose等必要的链接docker-machine

  1. 运行应用程序后,检查状态菜单中的 Docker 鲸鱼图标。

  2. 现在您应该能够在终端docker中像往常一样使用、、命令docker-composedocker-machine

有关的:

  • Brew 安装 docker 不包含 docker 引擎?

  • 无法连接到 macOS 上的 Docker 守护程序

Linux/Windows

从下载页面下载Docker CE并按照说明进行操作。

解决方案 11:

如果你收到消息Can't connect to docker daemon. Is 'docker -d' running on this host?,你可以通过 进行检查docker version

如果你看到Docker Client 正在运行,但 Docker Server 尚未运行的信息,那显然你需要启动 Docker 服务器。

在 CentOS 中,您可以使用service来启动或停止 Docker 服务器。

$ sudo service docker stop
$ sudo service docker start

然后输入 之后,你将获得Docker Client 和 Docker Serverdocker version的信息,并且Docker 守护进程已经启动。

解决方案 12:

如果您使用的是 Linux 并且安装了 Docker Desktop,则可能处于不同的 Docker 上下文中。尝试运行以下命令:

docker context use default

然后重试你之前尝试过的所有操作。你可能需要使用以下命令启动 docker 服务

service docker start

如果你想检查机器中的所有上下文:

docker context list

您将看到可以切换到哪些。更多详细信息请见此处:

安装 Docker Desktop 时,会创建一个专用的“desktop-linux”上下文来与 Docker Desktop 交互。启动时,Docker Desktop 会自动将其自己的上下文 (desktop-linux) 设置为当前上下文。这意味着后续 Docker CLI 命令将以 Docker Desktop 为目标。关闭时,Docker Desktop 会将当前上下文重置为默认上下文。

解决方案 13:

我遇到了类似的问题。我不得不注销并重新登录 shell,因为我刚刚安装了 Docker,而以下命令未显示在我的环境中。

export DOCKER_HOST=127.0.0.1:4243 >> ~/.bashrc

解决方案 14:

安装后我重新启动了 Docker:

$ sudo service docker stop
$ sudo service docker start

并且它有效。

解决方案 15:

我遇到过这个问题,我使用以下命令重新启动了 Docker:

$ sudo service docker stop
$ sudo service docker start

但是我的问题没有解决,因为我忘记在没有 的情况下执行 Docker 命令sudo。对于那些遇到此问题的人,请尝试检查一下。

尝试

$ sudo docker info

而不是这样:

$ docker info

解决方案 16:

在 2020 年 4 月的 MacOS Catalina 上,你只需要打开桌面应用程序:

docker 应用程序正在运行

解决方案 17:

我遇到了同样的错误,并且尝试过docker-machine regenerate-certseval..不起作用。

这是在 OS X 10.11.3 (El Capitan) 和 Docker v1.10.1 上发生的。我只能通过删除并重新创建 docker-machine 来修复它。来源

如果运行docker-machine ls,它会显示与下面类似的输出;

DOCKER

未知

错误

无法查询 docker 版本:无法连接到 docker 引擎端点

尝试使用以下命令删除你的 Docker 机器;

docker-machine rm -f default

default你的 Docker 机器名称在哪里?然后;

docker-machine create -d virtualbox default

创建一个新的 Docker 机器。

使用以下命令仔细检查一切是否正常(没有错误或未知的 Docker):

docker-machine ls

"$(docker-machine env default)"最后,在继续之前不要忘记运行,或者运行 Docker Quickstart Terminal,它会为您完成此操作...

解决方案 18:

我知道这篇文章中已经有很多答案了。我只想添加一个可以解决上述问题的简单答案。

sudo systemctl start docker

运行上述命令,它将启动所有与docker相关的线程/服务。

解决方案 19:

关注 Docker 的 DOC 站点:以非 root 用户身份管理 Docker

1)创建Docker组

sudo groupadd docker 

2)让用户属于docker组以获取该组的权限。

sudo usermod -aG docker $USER

检查您的 shell 是否设置了 DOCKER_HOST 环境变量。

env | grep DOCKER_HOST

如果存在的话,

unset DOCKER_HOST

那么这应该可以工作:

docker run hello-world

解决方案 20:

尝试将当前用户添加到docker组:

sudo usermod -aG docker $USER

然后注销并登录。

解决方案 21:

我遇到了同样的问题 - “无法连接到docker守护进程。”(除了我在尝试启动服务器时没有收到任何“找不到文件”错误。)

‘ps’ 显示“/usr/bin/docker -d”仍在运行

我意识到我从来没有真正成功地运行过服务器。每次尝试都产生了

...
2014/03/24 21:57:29 pid file found, ensure docker is not running or delete /var/run/docker.pid

所以我后来才意识到,安装docker可能已经用upstart注册了守护进程,upstart已经帮我启动了它。因此,尝试终止守护进程以手动重新启动它失败(操作不允许)。所以我做了一个

sudo kill -9 <PID>

在守护进程上。另一个守护进程立即取代了它的位置,这个新守护进程现在允许我的 CLI 客户端连接:

$ sudo docker info
Containers: 0
Images: 0
Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Dirs: 0
WARNING: No memory limit support
WARNING: No swap limit support

解决方案 22:

Linux

你可以使用这个答案https://stackoverflow.com/a/33596140/13997503
,即使使用这个答案后你仍然会得到同样的错误。那么你可能之前已经安装了 docker 桌面,现在切换到 docker-engine

您可以使用此命令删除 docker 桌面服务文件

$ rm -rf ~/.docker

解决方案 23:

我在Amazon AWS上运行时遇到了同样的问题。

以下是我尝试的操作:

  • docker-machine使用现有的 AWS 实例进行本地设置

  • 使用通用设置

  • 它有点连接,但由于远程端口已关闭,因此失败

  • 此后,Docker 守护进程拒绝启动,但运行dockerd确实有效......

在远程机器上进行了如下测试:

service docker start # Also restart, no success
systemctl start docker # Also restart, no success
dockerd # Success

我删除/var/lib/docker并卸载了所有内容,但重新安装后没有成功。不幸的是,我没有存储失败的日志,但docker.service就是拒绝启动。

然而,最终解决我的问题基本上是:

sudo usermod -aG docker $(whoami)

解决方案 24:

我遇到了同样的问题。在 CentOS 6.5 中:

ps aux |grep `cat /var/run/docker.pid`

如果它显示不存在 Docker 守护进程,那么我输入:

docker -d

然后按Ctrl+D停止 Docker。因为我们使用该-d选项,所以 Docker 将作为守护进程运行。现在我们可以执行以下操作:

service docker start

然后我可以做一个docker pull centos。就这样。

注意:如果这些不起作用,您可以尝试yum update,然后再次重复这些,因为我yum install之前尝试过这些。

解决方案 25:

如果您在 OS X 上使用 Docker 工具运行,请按照以下步骤操作。

重新启动守护进程并配置您的环境:

docker-machine restart

进而

docker-machine env

最后,

eval $(docker-machine env)

测试守护进程是否正在运行:

docker ps -adocker-machine ls。这将列出所有容器。

解决方案 26:

Docker 服务可能未运行。

如果您使用的是 RedHat/Fedora/CentOS,请尝试以下操作:

sudo systemctl start docker

如果你使用的是 Ubuntu/Debian:

sudo service start docker

Docker 将开始在您的主机和相应的端口上运行。

解决方案 27:

为了解决这个问题,我必须启用 docker 服务:

sudo systemctl enable /usr/lib/systemd/system/docker.service

解决方案 28:

检查你是否正在使用 Docker Machine:)

运行docker-machine env default应该可以解决问题。

因为根据文献:

Docker Machine 是一款工具,可让您在虚拟主机上安装 Docker Engine,并使用docker-machine命令管理主机。您可以使用 Machine 在本地 Mac 或 Windows 机器上、公司网络、数据中心或 AWS 或 Digital Ocean 等云提供商上创建 Docker 主机。

使用docker-machine命令,您可以启动、检查、停止和重新启动托管主机,升级 Docker 客户端和守护程序,以及配置 Docker 客户端与您的主机通信。

将 Machine CLI 指向正在运行的托管主机,然后您就可以
docker直接在该主机上运行命令。例如,运行
docker-machine env default以指向名为 的主机default,按照屏幕上的说明完成env设置,然后运行docker ps​​、
docker run hello-world等等。

https://docs.docker.com/machine/overview/

解决方案 29:

  1. 我也遇到了同样的问题。问题出在分配给 docker-daemon 和 docker-client 的套接字上。

  2. 首先,docker.sock 上的 docker-client 没有设置权限,您可以使用“sudo usermod -aG docker $USER”进行设置

  3. 然后检查 docker-client 正在运行的 bash 文件,对我来说它位于 0.0.0.0:2375,而 docker-daemon 在 unix 套接字上运行。(它是在 dockerd 的配置文件中设置的)。

  4. 只需注释掉 bash-line 它就能正常工作。

  5. 但是如果您想让它在 TCP 端口而不是 unix 套接字上工作,请更改 dockerd 的配置文件并将其设置为 0.0.0.0.2375,并保持 bash 中的行不变(如果存在)或将其设置为 0.0.0.0:2375。

解决方案 30:

要修复此问题,您需要在终端中发出以下命令。我将解释每个步骤:

# Uninstall Docker from apt packages
$ sudo apt-get remove docker docker.io

# Remove it from the libraries just to be
# sure it's gone forever
$ sudo rm -rf /var/lib/docker/*

现在,如果您想简化事情并获得更多时间,您可以使用以下参数运行我的init脚本installDocker

# Pull the init script from GitHub
$ wget https://github.com/dminca/dotfiles/blob/master/init

# Add rights to run the script
$ chmod 755 init

# Just run the script with the installDocker parameter
$ ./init installDocker

重新启动是可选的,但我建议您这样做以确保一切顺利运行。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用