Docker无法连接到docker守护程序

LiJ*_*ung 428 linux docker

我将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?
Run Code Online (Sandbox Code Playgroud)

我按照指示操​​作并输入命令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
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

mol*_*vec 601

Linux的

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

  1. 创建docker组.
    sudo groupadd docker
  2. 将用户添加到docker组.
    sudo usermod -aG docker $(whoami)
  3. 注销并重新登录以确保docker以正确的权限运行.
  4. 启动码头工具.
    sudo service docker start

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
Run Code Online (Sandbox Code Playgroud)

docker-machine start命令输出注释以指导该过程.

  • 如果由于某种原因,您不想注销,可以使用`newgrp`命令在此新组中启动新shell.像这样:`newgrp docker`. (20认同)

Day*_*aco 141

如果你在OS X上运行Docker,运行以下eval对我有用.

eval "$(docker-machine env default)"
Run Code Online (Sandbox Code Playgroud)

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

#Docker
eval "$(docker-machine env default)"
Run Code Online (Sandbox Code Playgroud)

请务必重新启动终端会话或运行源bash_profile以使更改生效.

  • 同样在这里,如果我单独尝试这个,我经常得到`错误检查TLS连接:主机没有运行`...在命令`docker-machine start default`之后运行这个eval. (3认同)

ken*_*orb 137

Linux的

要在Linux上运行docker守护程序(从CLI),请运行:

$ sudo service docker start # Ubuntu/Debian
Run Code Online (Sandbox Code Playgroud)

注意:$复制和粘贴时跳过字符.

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

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

$ sudo service docker stop
$ sudo rm -rf /var/lib/docker
$ sudo service docker start
Run Code Online (Sandbox Code Playgroud)

或手动喜欢:

$ sudo docker -d --storage-opt dm.basesize=20G
Run Code Online (Sandbox Code Playgroud)

docker-machine在Linux上安装

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

苹果系统

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

docker-machine在macOS上安装

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

请参阅:Docker for Mac入门.

docker-machine在macOS上配置

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

brew services start docker-machine
Run Code Online (Sandbox Code Playgroud)

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

docker-machine create --driver virtualbox default
Run Code Online (Sandbox Code Playgroud)

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

eval "$(docker-machine env default)"
Run Code Online (Sandbox Code Playgroud)

然后通过列出容器仔细检查:

docker ps
Run Code Online (Sandbox Code Playgroud)

请参阅:Docker Machine和本地VM入门.


在macOS上安装Docker.app

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

brew cask install docker
Run Code Online (Sandbox Code Playgroud)

查看此帖子了解更多详情.另请参阅:无法连接到macOS上的Docker守护程序

  • sudo service docker start 适用于 Ubuntu 14.04 上的 Docker 1.9.1 (2认同)
  • 我需要通过Homebrew安装docker-compose,docker-machine和docker然后它工作正常! (2认同)

K.A*_*.D. 100

经过详细调查后,每次重启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)"
Run Code Online (Sandbox Code Playgroud)

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

docker-machine start default; docker-machine regenerate-certs default; eval "$(docker-machine env default)"
Run Code Online (Sandbox Code Playgroud)

如果您收到以下错误:

Error getting SSH command: Something went wrong running an SSH command!
command : cat /etc/os-release
err     : exit status 255
output  :
Run Code Online (Sandbox Code Playgroud)

再次重新运行这三个命令,它应该第二次运行.

  • 我收到主机不存在:"默认" (6认同)

nPc*_*omp 42

这通常发生在您不在docker小组中时.您可以将自己添加到docker组:

sudo usermod -aG docker yourusername
Run Code Online (Sandbox Code Playgroud)

要么

sudo usermod -aG docker $(whoami)
Run Code Online (Sandbox Code Playgroud)

在此之后,您需要注销并重新登录到服务器.

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

  • 如果组不存在:sudo groupadd docker (3认同)

kev*_*rsi 28

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

ls -l /var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)

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

sudo chown *your-username* /var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)

然后你可以继续尝试无障碍地执行Docker命令:D

  • 这种方法的问题在于,每次重新启动守护程序时,都必须重复此步骤 (2认同)
  • 普通用户永远不应该拥有袜子!如果您不拥有该袜子,请确保您位于 Wheel 组和袜子所属组中……而不是袜子所有者组! (2认同)

Rob*_*ell 16

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

$ sudo service docker stop
$ ps aux | grep docker  # do this until you don't see /usr/bin/docker -d
$ /usr/bin/docker -d
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

这是因为该实例已从另一个虚拟机克隆.我只需要删除pid文件,之后一切正常.

当然,我建议不要盲目地假设这将有效,我建议再次手动运行守护进程,并在启动服务备份之前查看日志输出是否存在任何其他错误.

  • 警告:' - d'已弃用,很快就会删除.见用法.警告[0000]请改用"docker daemon". (3认同)
  • 提供但未定义的标志:-d (3认同)

Sha*_*ang 14

如果您收到消息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
Run Code Online (Sandbox Code Playgroud)

然后,在您键入后docker version,您将获得Docker Client和Docker Server的信息,并且Docker守护程序已经启动.

  • `sudo service docker start`也在Ubuntu 14.04上为我工作。 (2认同)

Gal*_*ley 11

我安装后重启Docker:

$ sudo service docker stop
$ sudo service docker start
Run Code Online (Sandbox Code Playgroud)

它有效.


Rez*_*a S 10

执行a ps aux | grep docker以查看守护程序是否正在运行.如果没有运行/etc/init.d/docker start

  • `sudo service docker start`告诉我"docker start/running,process 4633"然后`sudo service docker status`告诉"docker stop/waiting" (14认同)
  • 我也有同样的问题.'ps'表示我的docker进程仍在运行. (5认同)

ken*_*orb 10

使用Docker CE 应用

苹果系统

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

  1. 卸载您目前安装的所有 Docker Homebrew 软件包:

     brew uninstall docker-compose
     brew uninstall docker-machine
     brew uninstall docker
    
    Run Code Online (Sandbox Code Playgroud)
  2. 手动或通过Homebrew-Cask安装应用程序:

     brew install --cask docker
    
    Run Code Online (Sandbox Code Playgroud)

注意:这个程序将创建必要的环节dockerdocker-composedocker-machine,等。

  1. 运行应用程序后,在状态菜单中查看 Docker 鲸鱼图标。
  2. 现在您应该可以像往常一样在终端中使用docker, docker-compose,docker-machine命令了。

有关的:

Linux/视窗

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


小智 10

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

docker context use default
Run Code Online (Sandbox Code Playgroud)

并再次尝试您之前尝试做的任何事情。您可能需要启动 docker 服务

service docker start
Run Code Online (Sandbox Code Playgroud)

如果您想检查计算机中的所有上下文:

docker context list
Run Code Online (Sandbox Code Playgroud)

您将看到可以切换到哪些。更详细的信息来自这里

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


小智 8

我有类似的问题.我不得不注销并再次登录shell,因为我刚刚安装了Docker,并且我的环境中没有显示以下命令.

export DOCKER_HOST=127.0.0.1:4243 >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

  • 我只需要注销并重新登录.全部修复! (3认同)

小智 8

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

$ sudo service docker stop
$ sudo service docker start
Run Code Online (Sandbox Code Playgroud)

但我没有解决我的问题,因为我忘了执行我的Docker命令sudo.对于那些面临此问题的人,请尝试检查.

尝试

$ sudo docker info
Run Code Online (Sandbox Code Playgroud)

而不是这个:

$ docker info
Run Code Online (Sandbox Code Playgroud)


Ker*_*rem 7

我有同样的错误,尝试docker-machine regenerate-certseval..不适合我.

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

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

搬运工人

未知

错误

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

尝试删除您的Docker机器;

docker-machine rm -f default
Run Code Online (Sandbox Code Playgroud)

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

docker-machine create -d virtualbox default
Run Code Online (Sandbox Code Playgroud)

创建一个新的Docker机器.

仔细检查现在一切正常(没有错误或未知的Docker):

docker-machine ls
Run Code Online (Sandbox Code Playgroud)

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


dor*_*330 6

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

sudo usermod -aG docker $USER
Run Code Online (Sandbox Code Playgroud)

然后注销并登录.


小智 6

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

sudo systemctl start docker
Run Code Online (Sandbox Code Playgroud)

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


Rah*_*pta 6

操作系统

您可以使用此答案/sf/answers/2351729831/ ,即使使用此答案后您仍然会遇到相同的错误。那么您可能之前安装了 docker Desktop,现在切换到 docker-engine

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

$ rm -rf ~/.docker
Run Code Online (Sandbox Code Playgroud)


Jon*_*ley 5

我有同样的问题 - "无法连接到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
Run Code Online (Sandbox Code Playgroud)

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

sudo kill -9 <PID>
Run Code Online (Sandbox Code Playgroud)

在守护进程上.另一个守护进程立即取而代之,这个新守护进程现在让我的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
Run Code Online (Sandbox Code Playgroud)


Dek*_*eko 5

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

这是我尝试的:

  • docker-machine使用现有的AWS实例在本地设置
  • 使用的通用设置
  • 有点连接,但是由于远程端口已关闭,因此失败
  • 之后,Docker守护程序拒绝启动,但是运行dockerd确实可行...

在远程计算机上进行了以下测试:

service docker start # Also restart, no success
systemctl start docker # Also restart, no success
dockerd # Success
Run Code Online (Sandbox Code Playgroud)

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

但是,最终解决了我的问题的基本上是:

sudo usermod -aG docker $(whoami)
Run Code Online (Sandbox Code Playgroud)


bla*_*dri 5

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

1) 创建 Docker 组

sudo groupadd docker 
Run Code Online (Sandbox Code Playgroud)

2) 使用户属于 docker 组以获得该组的权限。

sudo usermod -aG docker $USER
Run Code Online (Sandbox Code Playgroud)

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

env | grep DOCKER_HOST
Run Code Online (Sandbox Code Playgroud)

如果存在,

unset DOCKER_HOST
Run Code Online (Sandbox Code Playgroud)

那么这应该工作:

docker run hello-world
Run Code Online (Sandbox Code Playgroud)

  • 你是一个救生员`unset DOCKER_HOST`为我工作 (2认同)

kva*_*aaz 5

您可以使用以下命令

sudo service docker stop
sudo service docker start
Run Code Online (Sandbox Code Playgroud)

简单地启动它。

  • 或者`sudo service docker restart`,更简单 (7认同)

Amr*_*Amr 5

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

docker 应用程序正在运行


归档时间:

查看次数:

510247 次

最近记录:

6 年,5 月 前