如何(使用脚本)获取docker exec使用的ID?
在docker映像运行之后,如何以编程方式获取ID,以便为该映像编写命令脚本?我想我想要的ID被称为如何(使用脚本)获取docker exec使用的ID?,docker,Docker,在docker映像运行之后,如何以编程方式获取ID,以便为该映像编写命令脚本?我想我想要的ID被称为容器ID,因为这就是它在docker ps命令的输出中列出的方式 例如,我使用docker run启动图像,我运行docker ps命令来获取我想要的“ID”,然后我可以运行docker log或其他命令 docker run myImage docker ps CONTAINER ID IMAGE COMMAND CREATED 1234567890 myImage
容器ID
,因为这就是它在docker ps
命令的输出中列出的方式
例如,我使用docker run
启动图像,我运行docker ps
命令来获取我想要的“ID”,然后我可以运行docker log
或其他命令
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.....
另见
我认为inspect只检查“映像”,而不是正在运行的实例(即容器)
我希望我有正确的术语,但如果不让我知道,我会解决它
注意:如果重要的话,该脚本是Linux上的bash脚本。如果启动分离的容器(
docker run-d…
),docker客户端将在标准输出上发出容器ID。因此,您可以执行以下操作:
$ CONTAINER_ID=$(docker run -d myImage)
$ docker exec $CONTAINER_ID somecommand
$ CONTAINER_ID=$(docker container ps --filter ancestor=myImage -q)
$ 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 run -d myImage)
$ docker exec $CONTAINER_ID somecommand
$ CONTAINER_ID=$(docker container ps --filter ancestor=myImage -q)
$ docker exec $CONTAINER_ID somecommand
如果启动分离的容器(
docker run-d…
),docker客户端将在stdout上发出容器ID。因此,您可以执行以下操作:
$ CONTAINER_ID=$(docker run -d myImage)
$ docker exec $CONTAINER_ID somecommand
$ CONTAINER_ID=$(docker container ps --filter ancestor=myImage -q)
$ 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 run -d myImage)
$ docker exec $CONTAINER_ID somecommand
$ CONTAINER_ID=$(docker container ps --filter ancestor=myImage -q)
$ docker exec $CONTAINER_ID somecommand
你也可以这样做
for container_id in $(docker ps --filter="name=$myImage" -q -a);do docker rm $container_id;done
你也可以这样做
for container_id in $(docker ps --filter="name=$myImage" -q -a);do docker rm $container_id;done
您可以通过过滤从特定图像创建的容器ID来获取容器ID
docker ps -qf "ancestor=imagename"
祖先
:筛选作为祖先共享给定图像的容器
-q
:仅输出ID
-f
:用于
-l
:显示最新的您可以通过筛选从特定图像创建的容器ID来获取容器ID
docker ps -qf "ancestor=imagename"
祖先
:筛选作为祖先共享给定图像的容器
-q
:仅输出ID
-f
:用于
-l
:显示最新的运行docker inspect myImage
将为您提供有关映像的信息,而不是您启动的容器的信息。为什么不直接为容器实例()指定名称?您可以按名称在容器实例上执行命令。@Ass3mbler,谢谢您的建议。我在谷歌上搜索,发现这也很有帮助。@PatS很高兴它有帮助!:)运行docker inspect myImage
将为您提供有关映像的信息,而不是您启动的容器的信息。为什么不直接为容器实例()指定一个名称?您可以按名称在容器实例上执行命令。@Ass3mbler,谢谢您的建议。我在谷歌上搜索,发现这也很有帮助。@PatS很高兴它有帮助!:)