运行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脚本。
答案 0 :(得分:3)
如果启动分离的容器(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
答案 1 :(得分:0)
您也可以通过这种方式
<header class="site-header">
<div class="wrap">
<div class="title-area">
<div id="divL">
<img id="logo-img" src="https://placehold.it/200x150/fa0" class="attachment-full size-full">
</div>
<div id="divR">Some text that should go on right</div>
</div>
<nav> .... </nav>
</div>
</header>
答案 2 :(得分:0)
您可以通过过滤从特定图像创建的容器ID来获取容器ID。
docker ps -qf "ancestor=imagename"
ancestor
:过滤器容器,这些容器将给定图像作为祖先共享
-q
:仅输出ID
-f
:代表filtering
-l
:显示最新的