启动容器时如何获取docker容器id

Mul*_*ter 6 docker

在编写启动 docker 容器的 bash 脚本时,引用已启动的 docker 容器很有用。docker容器启动时如何获取其具体的容器id?

PS 我知道我可以用来--name命名容器,我可以用它来过滤容器列表docker ps -aqf "name=containername",但如果我启动脚本两次,这将会失败。然后还有名称冲突的可能性。另外,如果你不能使用容器ID,那它们还有什么意义呢?

Mul*_*ter 8

当您启动一个分离的容器时,它会返回容器 ID。例如:

$ docker run -d ubuntu:18.04
71329cf6a02d89cf5f211072dd37716fe212787315ce4503eaee722da6ddf18f
Run Code Online (Sandbox Code Playgroud)

在 bash 中,您可以从输出中定义一个新变量,如下所示:

CID=$(docker run -d ubuntu:18.04)
Run Code Online (Sandbox Code Playgroud)

然后,稍后您可以使用此变量来引用您的容器,如下所示:

docker stop $CID
docker rm $CID
Run Code Online (Sandbox Code Playgroud)


Sho*_*hon 5

在“捕获容器 ID”docker run下的文档中,他们建议为此目的使用该标志。--cidfile

--cidfile接受文件名作为参数,并将容器的长 ID 写入该位置。例如,

docker run --cidfile /tmp/hello-world.cid hello-world && cat /tmp/hello-world.cid
Run Code Online (Sandbox Code Playgroud)

当您不想在分离状态下运行映像但仍想访问 ID 时,这非常有用。