我试图用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
?
答案 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/