为什么 docker-compose exec 仅适用于某些服务?

Jon*_*ldt 4 bash sh docker docker-compose

我有一个 docker-compose 文件,指定了多个服务,例如应用程序、服务器、redis 和数据库。当我想访问它们时,我会docker-compose exec application bashdocker-compose exec server bash. 但是当我做 adocker-compose exec redis sh我得到错误ERROR: No such service: redis。但是,我可以通过执行docker exec -it smb-redis sh来访问它。有什么不同?为什么我可以访问我正在运行的某些服务,而不能使用该命令访问其他服务?

Tar*_*ani 7

服务名称和图像名称可能不同。我可以有一个下面docker-compose.yml

version: "3"
mysql:
  image: redis
Run Code Online (Sandbox Code Playgroud)

然后进入redis我需要使用

docker-compose exec mysql sh
Run Code Online (Sandbox Code Playgroud)

因此,服务名称很重要,而不是该服务实际运行的内容。图像名称可以是 redis 或 mysql 或其他任何与此相关的名称。