docker-compose run and exec:未找到容器



我试图打开第二个终端 un 一个带有 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

>docker-compose旨在运行多容器应用程序,并且应该与docker-compose up一起使用。当你使用docker-compose run时,你做了一个特殊的容器,它并不是真正用于正常使用。

由于 docker-compose 只是 docker 的包装器,您仍然可以通过普通的 docker 命令访问这个特殊的容器:

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。

你需要做"docker-compose up -d"然后尝试您的命令

我认为您可能在项目名称方面遇到问题,因为您没有告诉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/

我通过首先运行解决了这个问题sudo systemctl restart

docker

如果您使用的是 docker-compose 运行此命令docker-compose run web Python manage.py makemigrations

最新更新