没有容器ID的Docker exec命令

joh*_*ewd 14 docker

怎么能这样做:

docker exec -it 06a0076fb4c0  install-smt
Run Code Online (Sandbox Code Playgroud)

但请改用容器的名称

docker exec -it container/container  install-smt
Run Code Online (Sandbox Code Playgroud)

我在CI服务器上运行构建,因此无法手动输入容器ID.

我怎样才能做到这一点?

TJ *_*dle 14

是的,您可以通过命名容器来完成此操作--name.请注意,您的命令container/container可能引用图像名称而不是容器.

?  ~ docker run --name my_nginx -p 80:80 -d nginx
d122acc37d5bc2a5e03bdb836ca7b9c69670de79063db995bfd6f66b9addfcac

?  ~ docker exec my_nginx hostname
d122acc37d5b
Run Code Online (Sandbox Code Playgroud)

  • @radtek - 所有参数必须在图像名称之前 (2认同)

Mal*_*ous 7

虽然它不会保存任何输入,但如果您想使用图像名称而不是为容器命名,则可以执行以下操作:

docker run debian
docker exec -it `docker ps -q --filter ancestor=debian` bash
Run Code Online (Sandbox Code Playgroud)

这仅在您只运行debian图像的一个实例时才有效。

如果您在处理 new 时不断修改映像Dockerfile,并希望在每个新容器中重复运行相同的命令以检查您的更改是否按预期工作,它确实会有所帮助。


joh*_*ewd 5

我能够通过在 docker-compose 文件中设置容器名称来解决这个问题,并docker exec -it使用文件中的名称运行。

@Héctor (tnx)