我试图打开第二个终端 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-compose 运行此命令docker-compose run web Python manage.py makemigrations