【发布时间】:2021-10-16 16:45:42
【问题描述】:
我正在使用以下版本的 Docker
$ docker -v
Docker version 20.10.7, build f0df350
当我使用“docker-compose up”启动我的容器时,我可以看到它们都提出了
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
29e94e032fbb maps_apache "httpd-foreground" 2 minutes ago Up 2 minutes 0.0.0.0:9090->80/tcp, :::9090->80/tcp maps_apache_1
13a8f2f037e4 maps_client "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:3001->3000/tcp, :::3001->3000/tcp web-app
318dff5311a2 maps_web "bash /my-app/entryp…" 2 minutes ago Up 2 minutes 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp maps_web_1
b4a6914cc67a postgres:10.5 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:5105->5432/tcp, :::5105->5432/tcp maps_postgres_1
我想使用可读的图像名称执行到我的 docker 容器中,所以我尝试了这个
$ docker exec -it maps_web sh
Error: No such container: maps_web
使用映像名称(而不是容器 ID)执行 docker 的正确方法是什么?
【问题讨论】:
-
我们无法通过镜像名称执行到容器中。图像不是容器;多个容器可以使用相同的图像。因此,这可能不是一对一的映射。
-
您是说“容器名称”吗?
-
在 Docker-compose 文件中分配正确的容器名称。例如。将您的容器命名为
maps_web。无需编写自定义 shell 脚本即可解决问题。 -
docker-compose exec web将使用 Compose 服务名称,无需手动分配容器名称。 -
感谢@David Maze。为了正式化我认为您所描述的内容,我运行了“docker-compose exec web sh”,这使我能够从容器内运行 shell 命令。
标签: docker docker-container docker-exec