docker-compose run和exec:找不到容器

时间:2017-11-20 14:32:11

标签: docker-compose

我试图用docker-compose打开第二个终端而不是一个码头。

首先使用

运行容器
docker-compose run my-centos bash

当我尝试打开第二个终端时

docker-compose exec my-centos bash

我收到了消息

ERROR:No container found for my_centos_1

如果我搜索正在运行的容器的名称,我会

CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS                    PORTS                    NAMES
34a95b44f0a2        centos6   "bash"                   9 minutes ago       Up 9 minutes                                       docker_my-centos_run_1

为什么docker-compose exec搜索docker_my_centos_1而不是docker_my-centos_run_1

4 个答案:

答案 0 :(得分:3)

docker-compose用于运行多容器应用程序,应该与docker-compose up一起使用。当您使用docker-compose run时,您会制作一个特殊容器,而这个容器并不适合正常使用。

由于docker-compose只是docker的包装器,你仍然可以通过普通的docker命令访问这个“specia”容器:

docker exec docker_my-centos_run_1 bash

否则我建议用docker-compose up启动容器。这使得您可以按照指定的方式运行第二个bash:

docker-compose exec my-centos bash

注意:我不知道您是否可以直接使用docker-compose up附加TTY,因此您可能需要额外运行docker-compose exec my-centos bash才能获得两个TTY。< / p>

答案 1 :(得分:2)

您需要执行“ docker-compose up -d” 然后尝试您的命令

答案 2 :(得分:0)

我通过第一次运行解决了这个问题 sudo systemctl重新启动docker

答案 3 :(得分:0)

我认为您可能对项目名称有疑问,因为您没有告诉 Docker 您所指的项目。

我遇到了这个问题,可以通过添加项目名称来修复:

docker-compose -p myprojectname ps

docker-compose -p myprojectname exec php_service composer install

这篇文章解释了它:https://codereviewvideos.com/blog/how-i-fixed-docker-compose-exec-error-no-container-found-for/