将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
如何解决问题?
答案 0 :(得分:583)
Post-installation steps for Linux文档显示了以下步骤:
sudo groupadd docker
sudo usermod -aG docker $(whoami)
sudo service docker start
正如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
命令输出注释以指导过程。
答案 1 :(得分:142)
如果您在OS X上运行Docker,运行以下eval对我有用。
eval "$(docker-machine env default)"
如果您不想在每个终端会话上运行此eval语句,可以将其添加到bash_profile
:
#Docker
eval "$(docker-machine env default)"
请务必重新启动终端会话或在bash_profile
上运行来源,以使更改生效。
答案 2 :(得分:127)
要在Linux上运行docker守护程序(来自CLI),请运行:
$ sudo service docker start # Ubuntu/Debian
注意:复制和粘贴时跳过$
字符。
在RedHat / CentOS上,运行:sudo systemctl start docker
。
初始化" base" filesystem,运行:
$ 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上安装机器二进制文件:
本地:
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上,docker
二进制文件只是一个客户端,你不能用它来运行docker守护进程,因为Docker守护进程使用特定于Linux的内核功能,因此你无法在OS X中本机运行Docker。所以您必须安装docker-machine
才能创建VM并附加到它。
docker-machine
如果您还没有docker-machine
命令,请使用以下方法之一安装它:
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
请参阅:Get started with Docker for Mac。
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。
除上述解决方案外,您还可以通过以下方式安装Docker应用程序:
brew cask install docker
检查post for more details。另见:Cannot connect to the Docker daemon on macOS
答案 3 :(得分:100)
经过详细调查后,每次重启Mac OS X (或重启Docker虚拟机)后,此问题似乎都会发生,这会阻止Docker客户端连接到Docker守护程序。 / p>
要解决此问题,您可以: A)使用官方安装程序(https://www.docker.com/products/docker-toolbox)重新安装Docker Toolbox,或者只是 B)按顺序运行以下命令: C)与(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)"
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 :
答案 4 :(得分:40)
当您不在docker
组时,通常会发生这种情况。您可以将自己添加到docker
群组:
sudo usermod -aG docker yourusername
或
sudo usermod -aG docker $(whoami)
在此之后,您需要注销并重新登录服务器。
或者,您可以sudo
每个Docker命令。
答案 5 :(得分:28)
如果上述所有其他解决方案都无效,您可以尝试检查ls -l /var/run/docker.sock
的所有权:
sudo chown *your-username* /var/run/docker.sock
如果您不是所有者,请使用以下命令更改所有权:
display:inline
然后你可以继续尝试无障碍地执行Docker命令:D
答案 6 :(得分: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
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
这是因为该实例是从另一个虚拟机克隆的。我只需要删除pid文件,之后一切都有效。
当然,我建议不要盲目地假设这会有效,我建议再次手动运行守护进程,并在开始服务备份之前查看日志输出是否有任何其他错误。
答案 7 :(得分:14)
如果您收到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守护程序。
答案 8 :(得分:11)
安装后重启Docker:
$ sudo service docker stop
$ sudo service docker start
它有效。
答案 9 :(得分:9)
执行ps aux | grep docker
以查看守护程序是否正在运行。如果没有运行/etc/init.d/docker start
答案 10 :(得分:8)
我遇到了这个问题,我使用这些命令重新启动了Docker:
$ sudo service docker stop
$ sudo service docker start
但是我没有解决我的问题,因为我忘了在没有sudo
的情况下执行我的Docker命令。对于那些面临此问题的人,请尝试检查。
尝试
$ sudo docker info
而不是:
$ docker info
答案 11 :(得分:7)
我有类似的问题。我不得不注销并再次登录shell,因为我刚刚安装了Docker,并且我的环境中没有显示以下命令。
export DOCKER_HOST=127.0.0.1:4243 >> ~/.bashrc
答案 12 :(得分:7)
我遇到同样的错误,尝试docker-machine regenerate-certs
或eval..
对我不起作用。
这在OS X 10.11.3(El Capitan)和Docker v1.10.1上。我只能通过删除并重新创建docker-machine来修复它。 Source
如果正在运行docker-machine ls
,它会显示与下面相似的输出;
泊坞
未知
错误
无法查询docker版本:不能 连接到docker引擎端点
尝试使用;
删除Docker机器docker-machine rm -f default
default
是您的Docker计算机名称。然后;
docker-machine create -d virtualbox default
创建一个新的Docker机器。
使用:
仔细检查现在一切正常(没有错误或未知的Docker)docker-machine ls
最后不要忘记在继续或运行Docker Quickstart终端之前运行"$(docker-machine env default)"
,它会为您完成...
答案 13 :(得分:6)
尝试将当前用户添加到docker
组:
sudo usermod -aG docker $USER
然后注销并登录。
答案 14 :(得分:5)
我遇到了同样的问题 - &#34;无法连接到docker守护程序。&#34; (除了我没有找到任何&#39;文件未找到&#39;尝试启动服务器时出错。)
&#39; PS&#39;显示&#34; / usr / bin / docker -d&#34;还在运行
我意识到我自己从未真正成功地运行过服务器。每次尝试都产生了
...
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
答案 15 :(得分:4)
如果您使用Docker工具在OS X上运行,请按照此步骤操作。
重新启动守护程序并配置您的环境:
docker-machine restart
然后
docker-machine env
最后,
eval $(docker-machine env)
测试守护程序是否正在运行:
docker ps -a
或docker-machine ls
。这将列出所有容器。
答案 16 :(得分:4)
答案 17 :(得分:4)
我遇到了同样的问题,在Amazon AWS上运行。
这是我的尝试:
docker-machine
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)
答案 18 :(得分:3)
关注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
答案 19 :(得分:3)
将新的 Docker Community Edition app 用于macOS。例如:
卸载到目前为止已安装的所有Docker Homebrew软件包:
brew uninstall docker-compose
brew uninstall docker-machine
brew uninstall docker
安装应用manually或通过Homebrew-Cask:
brew cask install docker
注意:此应用会创建指向docker
,docker-compose
,docker-machine
等的必要链接。
运行应用程序后,请在状态菜单中查看Docker whale图标。
docker
,docker-compose
,docker-machine
命令。相关:
下载Docker CE from the download page并按照说明操作。
答案 20 :(得分:2)
Docker Service可能没有运行。
如果您使用的是RedHat / Fedora / CentOS,请尝试以下操作:
sudo service start docker
如果您使用的是Ubuntu / Debian:
com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
Docker将开始在您的主机和相应端口上运行。
答案 21 :(得分:2)
我遇到了同样的问题。在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
之前会这样做。
答案 22 :(得分:1)
You can use the command
sudo service docker stop
sudo service docker start
to simply start it.
答案 23 :(得分:1)
我知道这篇文章已经有很多答案了。我只想添加一个简单的答案即可解决上述问题。
sudo systemctl start docker
运行以上命令,它将启动所有与docker相关的线程/服务。
答案 24 :(得分:1)
答案 25 :(得分:1)
我在Ubuntu 14.04上运行Docker 1.10时遇到了同样的问题,并且没有给出任何给定的答案。对我来说,修复是在运行Docker守护程序时指定存储驱动程序。
sudo docker daemon --storage-driver=devicemapper
答案 26 :(得分:1)
要修复,您需要在终端中发出以下命令。我将解释每一步:
# 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
重启是可选的,但我建议您这样做,以确保所有运行顺利。
答案 27 :(得分:1)
检查您是否使用Docker Machine:)
运行docker-machine env default
应该可以解决问题。
因为根据文件:
Docker Machine是一款可让您安装Docker Engine的工具 虚拟主机,并使用
docker-machine
命令管理主机。您 可以使用Machine在本地Mac或Windows上创建Docker主机 框,公司网络,数据中心或云端 AWS或Digital Ocean等提供商。使用
docker-machine
命令,您可以启动,检查,停止和 重新启动托管主机,升级Docker客户端和守护程序,以及 配置Docker客户端与主机通信。将Machine CLI指向正在运行的托管主机,然后即可运行
docker
直接在该主机上发出命令。例如,运行docker-machine env default
指向名为default
的主机,按照屏幕显示 有关完成env
设置并运行docker ps
的说明,docker run hello-world
,等等。
答案 28 :(得分:0)
通常这种情况不会发生。但有一天,这条消息出现了(如下所示),简单的重启就解决了
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
答案 29 :(得分:0)
我也遇到了问题&#34;无法连接到Docker守护程序。 docker守护程序是否在此主机上运行?&#34;。
我忘了使用sudo
。希望它能帮助我们中的一些人。
$:docker images
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
$:sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
答案 30 :(得分:0)
要解决此问题,我必须启用docker服务:
sudo systemctl enable /usr/lib/systemd/system/docker.service
答案 31 :(得分:0)
尝试更改docker
中的Docker配置文件docker-network
或/etc/sysconfig
:
(... ~v1.17)
docker
档案:OPTIONS= -H fd://
或(v1.18):
docker-network
档案:DOCKER_NETWORK_OPTIONS= -H unix:///var/run/docker.sock
答案 32 :(得分:0)
已经有很多答案,但是希望对大家有所帮助。通过snap安装docker时会出现此问题。通过sudo运行将允许您连接到守护程序,但这会导致其他问题。解决方案是在安装快照包之前执行一些步骤,以制作完整的步骤列表:
sudo addgroup --system docker
sudo adduser $USER docker
newgrp docker
sudo snap install docker
完成此操作后,docker将连接到守护程序,并且无需sudo即可工作,无需重新启动。
https://github.com/docker-archive/docker-snap/issues/1#issuecomment-423778054
答案 33 :(得分:0)
在Docker安装有snap
的情况下,有时在重新引导计算机时会遇到OP的错误。就我而言,运行sudo snap logs docker
会在日志中显示错误:
启动守护程序时出错:找到pid文件,请确保docker未运行或删除/var/snap/docker/423/run/docker.pid
运行sudo rm /var/snap/docker/423/run/docker.pid
之后,我可以正常启动Docker。
答案 34 :(得分:0)
您是否尝试过将其关闭再打开? : - )强>
在我的Mac上升级到Docker 1.10.1后,我遇到了同样的问题。 我做了以下事情:
在Docker快速入门终端上
$ exit
$ exit
然后
docker-machine kill default
然后重新启动Docker Quickstart Terminal
这解决了我的问题。
答案 35 :(得分:0)
如果您使用gitlab-ci / gitlab-runners,如果您无权访问/var/run/docker.sock
,则会收到该错误。
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
要解决此问题:
sudo usermod -aG docker gitlab-runner
验证:
sudo -u gitlab-runner -H docker info
希望有帮助。
答案 36 :(得分:0)
在Mac OS-X上,这可能意味着Docker安装已过时或未运行。只需从官方网站下载最新的docker并安装它。
为我工作。
答案 37 :(得分:0)
我很惊讶没有人回答这个问题:
create or replace Procedure SP_CUSTOMER_PRODUCT_QRY
( PARENT_PARTYID IN varchar2,PRODUCT_ID IN varchar2,PRODUCT_STATUS IN varchar2,PAGING IN varchar2,OFFSET IN varchar2,LIST_OF_PARTIES OUT VARCHAR2 )
AS
V_SQL_WHERE varchar2(10000):= null;
V_SQL varchar2(10000):='SELECT PARTYID FROM TABLE1';
V_check varchar2(10000) := '' ;
BEGIN
IF(PARENT_PARTYID IS NOT NULL) THEN
V_SQL_WHERE := V_SQL_WHERE || ' PARENT_PARTYID=:1';
END IF;
IF(PRODUCT_ID IS NOT NULL) THEN
IF (V_SQL_WHERE is not null) THEN
V_SQL_WHERE := V_SQL_WHERE || ' AND ';
END IF;
V_SQL_WHERE := V_SQL_WHERE || ' PRODUCT_ID=:2';
END IF;
IF(PRODUCT_STATUS IS NOT NULL) THEN
IF (V_SQL_WHERE is not null) THEN
V_SQL_WHERE := V_SQL_WHERE || ' AND ';
END IF;
V_SQL_WHERE := V_SQL_WHERE || ' PRODUCT_STATUS=:3';
END IF;
IF (V_SQL_WHERE is not null) then
V_SQL := V_SQL || ' WHERE ' || V_SQL_WHERE;
end if;
dbms_output.put_line(V_SQL);
EXECUTE IMMEDIATE V_SQL INTO LIST_OF_PARTIES;
EXCEPTION
WHEN NO_DATA_FOUND THEN
V_check:= '' ;
END;
如果您同时运行docker和docker-compose
,请执行此操作答案 38 :(得分:0)
您可以使用以下命令运行守护程序:
sudo nohup docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock &
该脚本使守护进程在后台运行,并且在准备好Docker之后,您可以测试它是否正在接受命令。
sudo docker info
了解更多信息请查看: https://www.upcloud.com/support/how-to-configure-docker-swarm/
答案 39 :(得分:0)
如果重新生成TLS证书不起作用
docker-machine regenerate-certs default
尝试重新启动docker机器并设置env变量:
docker-machine restart default
eval $(docker-machine env default)
检查机器是否正在运行:
docker-machine ls
或者
docker run hello-world
这对我有用。但是,如果您仍然没有守护程序,Docker's troubleshooting page详细说明了停止,删除和创建新计算机的过程。
答案 40 :(得分:0)
我有类似的问题。
在我的情况下,解决方案是删除已弃用的docker版本。我认为这引起了一些冲突。
关于ubuntu:
sudo apt remove docker
解决了我的问题
答案 41 :(得分:0)
好的,所以我今天开始遇到这个问题。然后我看到了很多回复,但似乎没有一个对我有用。首先是大多数指向linux的指令。而对于Mac版本,他们都在谈论运行'docker-machine'。我假设您使用docker-machine如果您安装docker工具箱,因为docker将在Windows和Mac平台的虚拟机中运行。但它的2017年现在和mac的docker非常稳定,因此不需要使用工具箱。
不确定守护进程是如何停止的。但要重新启动它,我所要做的就是去“应用程序”并双击docker图标。有人要求我更新并重新启动我接受的内容。之后,一切都像魅力一样。