Docker compose docker compose运行和执行:未找到容器

Docker compose docker compose运行和执行:未找到容器,docker-compose,Docker Compose,我正试图用docker compose打开docker的第二个终端 首先使用 docker-compose run my-centos bash 当我试图打开第二个终端时 docker-compose exec my-centos bash 我明白了 ERROR:No container found for my_centos_1 如果我搜索正在运行的容器的名称,我会得到 CONTAINER ID IMAGE C

我正试图用docker compose打开docker的第二个终端

首先使用

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 search
docker\u my\u centos\u 1
而不是
docker\u my-centos\u run\u 1

docker compose
旨在运行多容器应用程序,应该与
docker compose up
一起使用。当您使用
docker compose run
时,您制作了一个特殊的容器,它实际上并不适合正常使用

由于docker compose只是docker的包装器,因此您仍然可以通过正常的docker命令访问此特殊容器:

docker exec docker\u my-centos\u run\u 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”
然后尝试使用ur命令

我通过首先运行
sudo systemctl restart docker

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

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

docker-compose -p myprojectname ps


这篇文章对此进行了解释:

此外,似乎你并不真的需要docker compose来实现你想要实现的目标。简单的
docker
就足够了
docker-compose -p myprojectname exec php_service composer install