最新容器上的 Docker exec 命令,无需复制和粘贴 ID

标签 docker

我发誓我前段时间使用了一个选项,您可以在其中启动一个容器,然后在下一个 docker 命令中,您可以对该容器执行某些操作,而无需显式引用其 ID 或别名——要么它是“第一个容器”在您的容器列表中”或“最近创建的容器”。但我在 Google 上找不到任何内容。

我的想象力是这样记忆的:

docker run --detach -it ubuntu:latest
docker exec -it {0} bash

有这样的事吗?当您想与某人分享有关旋转某物的说明而无需他们复制和粘贴(或键入)其特定容器 ID 的任何内容时,这很有用。

最佳答案

收集了几种解决方案,这里有一些方法(随时用你的方法更新答案):

硬编码容器名称

这可能是最紧凑的解决方案

docker run --detach --name my_container -it ubuntu:latest
docker exec -it my_container bash

获取您最近创建的 docker 容器 ID

这是我一直记得的。

docker run --detach -it ubuntu:latest
docker exec -it $(docker ps --latest --quiet) bash
# you can also filter by ancestor (image) if other containers have been launched
# in the meanwhile:
docker exec -it $(docker ps --latest --quiet --filter ancestor=ubuntu:latest) bash

使用 shell 变量

我不完全理解 $_ 在这种情况下会有什么帮助,所以不能举个例子。

其他便于引用的提示

您不必复制整个 ID。如果您键入 a 作为容器 ID,它将找到以该字符序列开头的容器。如果有多个匹配项并且该命令可以接受多个容器 ID,它仍然可以工作(例如,docker kill a 将杀死所有 ID 以字母 a 开头的容器)

关于最新容器上的 Docker exec 命令,无需复制和粘贴 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46596086/

相关文章:

checksum - 在 Dockerfile 中校验和下载的规范方法?

asp.net - 如何使用私有(private) ip 在 API 上进行获取请求?

curl:(7)无法连接到172.17.0.8端口80:连接被拒绝

ruby-on-rails - 找不到Docker库/库?

docker - Cypress ci缺少libgtk-x11-2.0.so.0

docker - gitlab-ci 如何在内部与 gitlab runner 一起工作?

amazon-web-services - Jenkins Amazon ECR 插件登录问题 "Authorization Token has expired"

docker - 如何根据pod名称或容器ID查找容器镜像路径

Jenkins 使用 Docker : How to run tests?

reactjs - 如何让我的 docker 容器根据源文件的更改进行更新?