簡體   English   中英

動態獲取由 docker run 命令創建的正在運行的容器 id/name

[英]Dynamically get a running container id/name created by docker run command

因此,我正在嘗試運行以下 shell 腳本,該腳本需要動態獲取容器的容器 ID/名稱(將在其中運行腳本)。

一種方法可能是執行docker ps然后獲取容器 ID,但這不會是動態的。

那么有沒有辦法動態地做到這一點?

#!/bin/bash
docker exec <container id/name> /bin/bash -c "useradd -m <username> -p <password>"

您可以在運行時使用 --name 選項為容器指定特定名稱。

docker run --name mycontainer ...

然后您的 exec 命令可以使用指定的名稱:

docker exec -it mycontainer ...

您可以啟動容器並將容器 ID 存儲在一個變量中,如下所示:

container_id=$(docker run -it --rm --detach busybox)

然后,您可以在docker exec命令中使用容器 ID,如下所示:

docker exec $container_id ls -la

docker stop $container_id

注意:不為容器使用(唯一)名稱而是使用 ID 的靈感來自這篇關於如何將您的服務器/容器視為牛而不是寵物的文章

我只是想出了一種方法來做到這一點。 我經常用 bash 進入我的容器,但每次我都必須查找正在運行的容器的 id - 這很麻煩。 我像這樣使用--filter命令:

docker ps -q --filter="NAME={name of container}"

然后輸出的唯一內容是容器的 id,它允許我運行:

docker exec -it $(docker ps -q --filter="NAME={name of container}") bash

在這種情況下,這就是我真正想做的。

你可以過濾

id, name, label, exited, status, ancestor, 
beforesince, volume, network, publishexpose, 
health,isolation, or is-task

過濾器的文檔在這里 希望能幫助某人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM