gpt4 book ai didi

docker - 如何获取(使用脚本)与docker exec一起使用的ID?

转载 作者:行者123 更新时间:2023-12-02 20:45:55 25 4
gpt4 key购买 nike

运行docker镜像后,如何以编程方式获取ID,以便可以为该镜像编写命令脚本?我认为我想要的ID称为Container ID,因为那是docker ps命令的输出中列出的方式。

例如,我使用docker run启动图像,运行docker ps命令以获取所需的“ID”,然后可以运行docker logs或其他命令。

docker run myImage
docker ps
CONTAINER ID IMAGE COMMAND CREATED
1234567890 myImage sleep 120 ...

现在,我知道容器ID是 1234567890,我可以在容器上运行命令了。
docker logs 1234567890
docker exec -it 1234567890 bash

如何以编程方式获取该ID(假设当前仅运行该图像的一个实例)。

我尝试了我认为可以执行的命令,但没有成功。
docker inspect --format='{{.Id}}' myImage
sha256:95e11.....

另请参见 https://docs.docker.com/engine/reference/commandline/inspect/#examples

我认为检查仅检查“图像”而不是正在运行的实例(即容器)。

我希望我的术语正确,但是如果不告诉我,我将进行修复。

注意:如果重要,该脚本在Linux上为bash脚本。

最佳答案

如果您启动一个分离的容器(docker run -d ...),则Docker客户端将在stdout上发出容器ID。因此,您可以执行以下操作:

$ CONTAINER_ID=$(docker run -d myImage)
$ docker exec $CONTAINER_ID somecommand

如果为容器分配名称,则可以使用该名称代替容器ID:
$ docker run --name myContainer myImage
$ docker exec myContainer somecommand

如果您只是想要您启动的最新容器的ID,可以使用 docker ps -lq:
$ CONTAINER_ID=$(docker ps -lq)
$ docker exec $CONTAINER_ID somecommand

如果给定镜像仅运行一个容器,则可以运行以下内容:
$ CONTAINER_ID=$(docker container ps --filter ancestor=myImage -q)
$ docker exec $CONTAINER_ID somecommand

关于docker - 如何获取(使用脚本)与docker exec一起使用的ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54083595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com