Ubuntu 16.04 - >错误:无法连接到Docker守护程序 - 您可能需要运行`docker-machine start default`

时间:2016-10-20 15:58:30

标签: ubuntu docker-compose

我在ubuntu 16.04上收到错误

  

“错误:无法连接到Docker守护程序 - 您可能需要运行   docker- machine start default。 “

当我运行以下命令

sudo docker-compose up

任何人都可以回答吗?

18 个答案:

答案 0 :(得分:11)

假设使用以下shell命令设置环境变量:

eval "$(docker-machine env default)"

然后您可以通过运行以下shell命令找到确切的错误:

docker-compose --verbose up -d

很多次代理问题,或者如果您使用charles代理运行它,它可以阻止连接等。如果是代理问题,您可以将其添加到您的个人资料中:

export no_proxy=192.168.99.100

答案 1 :(得分:6)

  

启动Docker守护程序

使用以下命令:

sudo systemctl start docker  

或在较旧的发行版上,您可能需要使用:

sudo service docker start

答案 2 :(得分:3)

之后

#sudo snap remove docker //only if required
sudo snap install docker

以下命令对我有用

docker-compose --verbose up -d

如果docker服务不活跃,请执行以下任一操作(优先考虑第一个)

1. sudo snap start docker    
2. sudo systemctl start docker
3 .sudo service docker start

答案 3 :(得分:2)

10分钟前我也遇到了同样的错误,并通过以下方法解决了该问题:

sudo snap remove docker

完成后:

sudo snap install docker

问题解决了。

答案 4 :(得分:1)

您应该在docker组中添加您的用户。 然后,您可以使用没有'sudo'的docker命令。

$ sudo usermod -aG docker ${USER}
$ sudo service docker restart

接下来,您必须在操作系统中注销。 最后,当您登录时,可以使用不带“sudo”的docker命令。

答案 5 :(得分:1)

我也遇到过这种情况

asif@ck ~/u/m/moberry_pizza_order (main)> docker-compose -f local.yml build
ERROR: Couldn't connect to Docker daemon - you might need to run `docker-machine start default`.
asif@ck ~/u/m/moberry_pizza_order (main) [1]> docker-machine start default
Docker machine "default" does not exist. Use "docker-machine ls" to list machines. Use "docker-machine create" to add a new one.
asif@ck ~/u/m/moberry_pizza_order (main) [1]> docker-machine ls
NAME   ACTIVE   DRIVER   STATE   URL   SWARM   DOCKER   ERRORS
asif@ck ~/u/m/moberry_pizza_order (main)> docker-machine create -d dev;
Driver "dev" not found. Do you have the plugin binary "docker-machine-driver-dev" accessible in your PATH?
asif@ck ~/u/m/moberry_pizza_order (main) [1]> docker-compose -f local.yml up
ERROR: Couldn't connect to Docker daemon - you might need to run `docker-machine start default`.

然后我尝试跟随,

$ sudo apt update && sudo apt dist-upgrade
$ docker-compose --version
docker-compose version 1.25.5, build unknown
$ sudo usermod -aG docker $USER
$ newgrp docker
$ docker run hello-world

无法在本地找到图像 'hello-world:latest' 最新:从图书馆/hello-world 中提取 b8dfde127a29:拉取完成 摘要:sha256:f2266cbfc127c960fd30e76b7c792dc23b588c0db76233517e1891a4e357d519 状态:为 hello-world:latest 下载了更新的图像

来自 Docker 的您好! 此消息表明您的安装工作正常。

为了生成此消息,Docker 采取了以下步骤:

  1. Docker 客户端联系了 Docker 守护进程。
  2. Docker 守护进程从 Docker Hub 中提取了“hello-world”镜像。 (amd64)
  3. Docker 守护进程从该映像创建了一个新容器,该容器运行 生成您当前正在阅读的输出的可执行文件。
  4. Docker 守护进程将该输出流式传输到 Docker 客户端,后者将其发送 到您的终端。

要尝试更雄心勃勃的事情,您可以使用以下命令运行 Ubuntu 容器:

 $ docker run -it ubuntu bash

做完这些我的命令开始工作

 $docker-compose -f local.yml up

使用默认驱动创建网络“moberry_pizza_order_default” 使用默认驱动程序创建卷“moberry_pizza_order_local_postgres_data” 使用默认驱动程序创建卷“moberry_pizza_order_local_postgres_data_backups” 构建 postgres 第 1/4 步:来自 postgres:13.2 13.2: 从库/postgres 中拉取

所以重启守护进程是这里的主要事情。你可以通过几种方式做到这一点。

答案 6 :(得分:0)

有时,如果您之前构建了堆栈,则会出现此错误。 给出错误的原因可能是文件权限。 如果在构建过程中,docker生成了新文件或编辑了一些文件,则将有一些root拥有的文件。

因此,如果原因是出于许可,请让您的用户成为所有应用程序文件的所有者。

$ sudo chown -R ${USER} .

答案 7 :(得分:0)

如果您使用的是 Windows 10 并使用 Docker 工具箱,请使用此

& "C:\Program Files\Docker Toolbox\docker-machine.exe" env | Invoke-Expression

答案 8 :(得分:0)

跑步 $ sudo docker组成-d 解决了我的问题。 实际上,我的权限问题是我通过提供详细选项了解的。

答案 9 :(得分:0)

我的问题是我在图像名称的变量前面缺少 $ 符号

image: imagename:{TAG:-develop-latest}

答案 10 :(得分:0)

安装后可以执行命令以访问docker功能而无需sudo。在我看来,所有相同的错误都在:

之后解决。
$ sudo usermod -aG docker ${USER}
$ su - ${USER}
$ id -n
$ sudo usermod -aG docker username

,然后可以重新启动docker:

systemctl restart docker

答案 11 :(得分:0)

我们需要重启docker

$ sudo service docker restart

click here

答案 12 :(得分:0)

如果您将Docker作为snap软件包安装了,请尝试以下操作:

snap start docker

答案 13 :(得分:0)

尝试以root身份运行: sudo docker-compose build

答案 14 :(得分:0)

在我的特殊情况下,我在docker-compose.yml文件中指定的mysql服务已在项目根目录中创建了名为mysql_data的卷。问题在于该目录以及包含的文件是使用用户999和docker组创建的。因此,我们实质上已经创建了一个权限问题,可以使用Handling Permissions With Docker Volumes

中讨论的技术来共同缓解这些问题。

但是,要纠正当前的状况,您应该确定引起该问题的卷数据。在我的特定情况下,它是mysql_data卷,因此我在项目根目录中执行了以下操作,以将文件和目录所有权更改为当前登录用户的所有权:

sudo chown -R ${USER}:${USER} mysql_data

如果不确定是哪个卷引起了与所有权相关的问题,为确保所有项目的所有权详细信息都相同,则应在项目根目录中执行以下操作:

sudo chown -R ${USER}:${USER} .

现在,如果您的项目处于Git源代码控制之下,由于执行上述命令之一,您现在将面临一种情况,即文件和目录的所有权不同于git存储对象数据库中的所有权。在这种情况下,您很可能会遇到类似于“ git: Unable to index file”的错误-在进一步向git项目存储库中添加和提交任何文件之前,应确保git对象中文件的所有权数据库是项目文件所有权的精确镜像。您可以通过在项目根目录中执行以下操作来确保这一点:

sudo chown -R ${USER}:${USER} .git/objects

现在已经解决了遇到的初始错误,现在可以发出原始的docker-compose命令,该命令最初成功导致“无法连接到Docker Daemon”错误。

答案 15 :(得分:0)

我注意到安装docker-compose后出现此错误。尝试运行sudo docker-compose build给了我错误-

  

错误:无法连接到Docker守护程序。您可能需要安装Docker

我通过installing docker-ce(Ubuntu 16.04和18.04)解决了这个问题。此后一切都按预期进行

答案 16 :(得分:-1)

在所有“docker-compose”终端命令中使用“sudo”权限作为前缀。

答案 17 :(得分:-2)

就我而言,有时您只需要使用“ sudo docker-compose up”