将 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
我该如何解决这个问题?
no such file or directory[/var/lib/docker|2462000b]
。您的系统上是否存在 /var/lib/docker
?如果没有,那么我认为您需要重新安装 Docker。
Linux
Post-installation steps for Linux 文档揭示了以下步骤:
创建泊坞窗组。 sudo groupadd docker 将用户添加到 docker 组。 sudo usermod -aG docker $(whoami) 注销并重新登录以确保 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
命令输出注释以指导该过程。
Linux
要在 Linux(来自 CLI)上运行 docker 守护程序,请运行:
$ 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
在 Linux 上安装 docker-machine
在 Linux 上安装机器二进制文件:
本地:安装 -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-机器'
苹果系统
在 macOS 上,docker
二进制文件只是一个客户端,您不能使用它来运行 docker 守护程序,因为 Docker 守护程序使用 Linux 特定的内核功能,因此您不能在 OS X 中本地运行 Docker。所以您必须安装 { 2}为了创建VM并附加到它。
在 macOS 上安装 docker-machine
如果您还没有 docker-machine
命令,请使用以下方法之一安装它:
使用 Brew 命令:brew install docker-machine docker。
从 GitHub 手动安装 -v <(curl https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) /usr/local/bin/docker-machine
请参阅:Get started with Docker for Mac。
在 macOS 上配置 docker-machine
要通过 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
请参阅:Get started with Docker Machine and a local VM。
在 macOS 上安装 Docker.app
作为上述解决方案的替代方案,您可以通过以下方式安装 Docker 应用程序:
brew cask install docker
检查此post for more details。另请参阅:Cannot connect to the Docker daemon on macOS
docker-toolbox
sudo rm -rf /var/lib/docker
的 CentOS 7.6 上遇到了这个问题,然后重新启动就可以了。我真的被困住了,没有其他解决方案对我有用。
如果您在 OS X 上运行 Docker,则运行以下 eval 对我有用。
eval "$(docker-machine env default)"
如果您不想在每个终端会话上运行此 eval 语句,您可以将其添加到您的 bash_profile
:
#Docker
eval "$(docker-machine env default)"
请务必重新启动终端会话或在 bash_profile
上运行 source 以使更改生效。
Error checking TLS connection: Host is not running
... 在命令 docker-machine start default
成功后运行此 eval。
经过详细调查,这个问题似乎每次在 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 :
只需再次重新运行三个命令,它应该第二次工作。
这通常发生在您不在 docker
组中时。您可以通过以下方式将自己添加到 docker
组:
sudo usermod -aG docker yourusername
或者
sudo usermod -aG docker $(whoami)
在此之后,您需要注销并重新登录到服务器。
或者,您可以sudo
每个 Docker 命令。
如果上述所有其他解决方案都不起作用,您可以尝试检查 /var/run/docker.sock
的所有权:
ls -l /var/run/docker.sock
如果您不是所有者,则使用以下命令更改所有权:
sudo chown *your-username* /var/run/docker.sock
然后,您可以继续尝试轻松执行 Docker 命令:D
sudo chown $(whoami) /var/run/docker.sock
是否也有效?
你可以使用命令
sudo service docker stop && sudo service docker start
或者
sudo service docker restart
只需重新启动它。
sudo service docker restart
,更简单😊
systemd
:sudo systemctl restart docker
找出 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,然后一切正常。
当然,我建议不要盲目地假设这会起作用,而是建议再手动运行一次守护程序,并在启动服务备份之前查看日志输出是否有任何其他错误。
apparmor
包。
dockerd -D
执行 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”
如果您收到消息Can't connect to docker daemon. Is 'docker -d' running on this host?
,您可以通过docker version
查看。
如果看到Docker Client is running. but Docker Server is not这样的信息,显然需要启动Docker服务器。
在 CentOS 中,您可以使用 service
来启动或停止 Docker 服务器。
$ sudo service docker stop
$ sudo service docker start
然后,输入 docker version
后,会得到 Docker Client and Docker Server 的信息,Docker daemon 已经启动。
sudo service docker start
在 Ubuntu 14.04 上也为我工作。
我有类似的问题。我不得不注销并再次登录到 shell,因为我刚刚安装了 Docker,并且我的环境中没有显示以下命令。
export DOCKER_HOST=127.0.0.1:4243 >> ~/.bashrc
安装后我重新启动 Docker:
$ sudo service docker stop
$ sudo service docker start
它有效。
使用 Docker CE 应用程序
苹果系统
使用适用于 macOS 的新 Docker Community Edition app。例如:
卸载到目前为止已安装的所有 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 install docker 不包括 docker 引擎?
无法连接到 macOS 上的 Docker 守护进程
Linux/Windows
下载 Docker CE from the download page 并按照说明进行操作。
brew install --cask docker
(截至 2021 年)
我遇到了这个问题,我使用以下命令重新启动了 Docker:
$ sudo service docker stop
$ sudo service docker start
但是我没有解决我的问题,因为我忘记在没有 sudo
的情况下执行我的 Docker 命令。对于那些面临这个问题的人,试着检查一下。
尝试
$ sudo docker info
而不是这个:
$ docker info
docker build
时遇到的问题。
我有同样的错误,尝试 docker-machine regenerate-certs
或 eval..
对我不起作用。
这在 OS X 10.11.3 (El Capitan) 和 Docker v1.10.1 上。我只能通过再次删除并重新创建 docker-machine 来修复它。 Source
如果运行 docker-machine ls
,它会向您显示与以下类似的输出;
DOCKER Unknown ERRORS 无法查询 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 快速启动终端,它会为您完成它...
我知道这篇文章中已经有很多答案了。只是我想添加一个解决上述问题的简单答案。
sudo systemctl start docker
运行上述命令,它将启动所有与 docker 相关的线程/服务。
尝试将当前用户添加到 docker
组:
sudo usermod -aG docker $USER
然后注销并登录。
我遇到了同样的问题 - “无法连接到 docker daemon。” (除了我在尝试启动服务器时没有收到任何“找不到文件”错误。)
“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 注册了守护进程,它已经为我启动了它。因此,尝试杀死守护程序以手动重新启动它会失败(不允许操作)。所以我做了一个
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
关注 Docker 的 DOC 站点:Manage Docker as a non-root user
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
unset DOCKER_HOST
unset DOCKER_HOST
解决方案。谢谢!
我刚刚遇到了同样的问题,在 Amazon AWS 上运行。
这是我尝试的:
使用现有的 AWS 实例在本地设置 docker-machine
使用的通用设置
它有点连接,但由于远程端口被关闭,它失败了
之后,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)
2020 年 4 月在 MacOS Catalina 上,您只需要打开桌面应用程序:
https://i.stack.imgur.com/v9va5.png
我遇到了同样的问题。在 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
之前。
sudo /usr/bin/dockerd
。 Ubuntu 18。
如果您使用 Docker 工具在 OS X 上运行,请按照此操作。
重新启动守护程序并配置您的环境:
docker-machine restart
接着
docker-machine env
最后,
eval $(docker-machine env)
要测试守护程序是否正在运行:
docker ps -a
或 docker-machine ls
。这将列出所有容器。
Docker Service 可能未运行。
如果您使用的是 RedHat/Fedora/CentOS,请尝试以下操作:
sudo systemctl start docker
如果您使用的是 Ubuntu/Debian:
sudo service start docker
Docker 将开始在您的主机和相应的端口上运行。
为了解决这个问题,我必须启用 docker 服务:
sudo systemctl enable /usr/lib/systemd/system/docker.service
检查您是否正在使用 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/
我也有同样的问题。问题出在分配给 docker-daemon 和 docker-client 的套接字中。首先,没有为 docker.sock 上的 docker-client 设置权限您可以使用“sudo usermod -aG docker $USER”设置它然后检查 docker-client 运行的 bash 文件,对我来说它位于 0.0.0.0 :2375,当 docker-daemon 在 unix socket 上运行时。(它是在 dockerd 的配置文件中设置的)。只需评论 bash 行,它就会正常工作。但是如果你想让它在 TCP 端口而不是 unix 套接字上工作,请更改 dockerd 的配置文件并将其设置为 0.0.0.0.2375 并保持 bash 中的行(如果存在)或将其设置为 0.0.0.0: 2375.
要修复,您需要在终端中发出以下命令。我将解释每个步骤:
# 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/*
现在,如果您想简化事情并获得更多时间,可以使用参数 installDocker
运行我的 init
script:
# 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
重新启动是可选的,但我建议您这样做以确保一切顺利运行。
我在 Ubuntu 14.04 上运行 Docker 1.10 时遇到了同样的问题,并且给出的答案都没有奏效。对我来说,解决方法是在运行 Docker 守护程序时指定存储驱动程序。
sudo docker daemon --storage-driver=devicemapper
我有一个类似的问题。
就我而言,解决方案是删除已弃用的 docker 版本。我认为这引起了一些冲突。
在 ubuntu 上:
sudo apt remove docker
为我解决了问题
newgrp
命令在这个新组中启动一个新的 shell。像这样:newgrp docker
。alias docker='sudo docker'
成功了。 :psystemd
/upstart
/chkconfig
to start docker on boot。 systemd:sudo systemctl enable docker
, chkconfig:sudo chkconfig docker on
, upstart 默认开启。