无法从 docker-compose 连接到 docker

新手上路,请多包涵

我在 Mac OS 10.8.5 上安装了 docker-machine 0.1.0 和 docker-compose 1.1.0。

docker-machine 运行正常,可以通过 docker-machine ssh 连接。

 $ docker-machine ls
NAME   ACTIVE   DRIVER       STATE     URL                         SWARM
dev    *        virtualbox   Running   tcp://192.168.99.100:2376

但是无法从 docker-compose 连接。

 $ docker-compose up

无法通过 http+unix://var/run/docker.sock 连接到 Docker 守护程序 - 它正在运行吗?

如果它位于非标准位置,请使用 DOCKER_HOST 环境变量指定 URL。

我的 Dockerfile 和 docker-compose.yml 在这里。

Dockerfile

 FROM centos:centos7
DOCKER_HOST tcp://192.168.99.100:2376

码头工人-compose.yml

 web:
  build: .

为什么无法连接?有任何想法吗?

原文由 DIGITALSQUAD 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 714
2 个回答

Docker 机器正在运行。但是你需要导出一些环境来连接到 Docker 机器。默认情况下, docker CLI 客户端正在尝试使用 http+unix://var/run/docker.sock 与守护程序通信(如错误消息中所示)。

使用 eval $(docker-machine env dev) 导出正确的环境变量,然后重试。您也可以只运行 docker-machine env dev 来查看它将导出的环境变量。请注意,其中之一是 DOCKER_HOST ,就像错误消息表明您可能需要设置一样。

原文由 Andy Shinn 发布,翻译遵循 CC BY-SA 3.0 许可协议

对我来说简单的解决方案: sudo docker-compose up


更新 2016-3-14:在 docker install 过程(或 docker-compose ?)的某个时刻,有一个建议和示例将您的用户名添加到“docker”组。这使您可以避免在所有 docker 命令之前都需要“sudo”,如下所示:

 ~ > docker run -it ubuntu /bin/bash
root@665d1ea76b8d:/# date
Mon Mar 14 23:43:36 UTC 2016
root@665d1ea76b8d:/# exit
exit
~ >

仔细查看安装命令的输出(docker 和 docker-compose 的第二次安装),您会找到必要的步骤。它也记录在这里: https ://subosito.com/posts/docker-tips/

须藤?不!

厌倦了每次发出命令时都输入 sudo docker?是的,有办法解决这个问题。虽然 docker 自然需要 root 用户,但我们可以为 docker 操作提供一个 root 等效组。

您可以创建一个名为 docker 的组,然后将所需的用户添加到该组。重新启动 docker 服务后,用户无需每次执行 docker 操作时都输入 sudo。它在 shell 命令上的外观如何?作为一个根,你去:

 > sudo groupadd docker
> sudo gpasswd -a username docker
> sudo service docker restart

完毕!

更新 2017-3-9

Docker 安装 说明已在此处更新。

Linux 的安装后步骤

本节包含配置 Linux 主机以更好地使用 Docker 的可选过程。

以非 root 用户身份管理 Docker

docker 守护进程绑定到 Unix 套接字而不是 TCP 端口。默认情况下,Unix 套接字由用户 root 拥有,其他用户只能使用 sudo 访问它。 docker 守护进程始终以 root 用户身份运行。

如果您在使用 docker 命令时不想使用 sudo,请创建一个名为 docker 的 Unix 组并将用户添加到其中。当 docker 守护进程启动时,它使 Unix 套接字的所有权可由 docker 组读/写。

要创建 docker 组并添加您的用户:

 # 1. Create the docker group.
$ sudo groupadd docker

# 2. Add your user to the docker group.
$ sudo usermod -aG docker $USER

# 3. Log out and log back in so that your group membership is re-evaluated.

# 4. Verify that you can run docker commands without sudo.
$ docker run hello-world

此命令下载测试映像并在容器中运行它。当容器运行时,它会打印一条信息性消息并退出。

原文由 Alan Thompson 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题