docker-compose在Docker for Mac中找不到服务或容器

时间:2016-10-03 13:09:47

标签: macos docker docker-compose

我有一个docker-compose设置,用于启动Rails Web应用程序和PostgreSQL数据库容器。

两个服务都启动了,但我需要在Web应用程序容器(service =“web”)中运行db:seed和db:migrate。

我试着这样做:

docker-compose exec web rails db:seed

但它告诉我:

ERROR: No container found for web_1

当我尝试使用docker:

docker exec <container-id> rails db:seed

Docker确实尝试在容器中执行该命令,但它显然失败了,因为docker不知道PostgreSQL容器并且无法连接到它以执行种子命令。

这似乎只是Docker for Mac中的一个问题。在Ubuntu中一切正常。

我使用的是版本1.8.0的docker-compose和1.12.1的docker。

2 个答案:

答案 0 :(得分:1)

执行docker-compose run时,它会为正在运行的容器生成随机唯一名称,您必须在使用exec时指定该名称。

$ docker-compose run bot ...

在另一个终端:

$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 306bd1381f81 rroemhild/errbot "/app/venv/bin/run.sh" 13 seconds ago Up 11 seconds 3141-3142/tcp err_bot_run_31 $ docker exec bot whoami Error response from daemon: No such container: bot $ docker exec err_bot_run_31 whoami err

答案 1 :(得分:1)

好的,找到了答案。不确定这是否特定于Docker for Mac,但我在Ubuntu中没有这个问题。

我有2个终端正在运行。在第一次,我跑了

docker-compose up

提出我的服务。

第二次,我跑了:

docker-compose exec web rails db:seed

在我的网络容器中执行rails命令。

这就是事情:在第二个终端中,您必须与docker-compose.yml文件位于同一目录中。您不能从任何地方运行docker-compose命令。

当我更改到第二个终端中的正确目录时,exec命令工作正常。