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: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 文档的安装后步骤揭示了以下步骤:
创建docker组。
sudo groupadd docker
将用户添加到docker组。
sudo usermod -aG docker $(whoami)
注销并重新登录以确保 docker 以正确的权限运行。
启动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 社区版应用程序。例如:
卸载迄今为止安装的所有 Docker Homebrew 软件包:
brew uninstall docker-compose
brew uninstall docker-machine
brew uninstall docker
手动或通过Homebrew-Cask安装应用程序:
brew install --cask docker
注意:此应用程序将创建docker
、、docker-compose
等必要的链接docker-machine
。
运行应用程序后,检查状态菜单中的 Docker 鲸鱼图标。
现在您应该能够在终端
docker
中像往常一样使用、、命令docker-compose
。docker-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 上,你只需要打开桌面应用程序:
解决方案 17:
我遇到了同样的错误,并且尝试过docker-machine regenerate-certs
但eval..
不起作用。
这是在 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 -a
或docker-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:
我也遇到了同样的问题。问题出在分配给 docker-daemon 和 docker-client 的套接字上。
首先,docker.sock 上的 docker-client 没有设置权限,您可以使用“sudo usermod -aG docker $USER”进行设置
然后检查 docker-client 正在运行的 bash 文件,对我来说它位于 0.0.0.0:2375,而 docker-daemon 在 unix 套接字上运行。(它是在 dockerd 的配置文件中设置的)。
只需注释掉 bash-line 它就能正常工作。
但是如果您想让它在 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
重新启动是可选的,但我建议您这样做以确保一切顺利运行。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件