コンテナー名からdockerコンテナーIDを取得するコマンドは何ですか?
コンテナー名からdockerコンテナーIDを取得するコマンドは何ですか?
回答:
Linuxの場合:
sudo docker ps -aqf "name=containername"
またはOS X、Windowsの場合:
docker ps -aqf "name=containername"
containername
コンテナ名はどこですか。
@llia Sidorenkoが指摘するように、誤検知を回避するには、次のように正規表現アンカーを使用できます。
docker ps -aqf "name=^containername$"
説明:
-q
静かに。IDのみを出力-a
すべてのために。コンテナが実行されていなくても機能します-f
以下のためのフィルタ。^
コンテナ名はこの文字列で始まる必要があります$
コンテナ名はこの文字列で終わる必要があります--no-trunc
フラグを使用します。そうdocker ps --no-trunc -aqf "name=containername"
docker inspect --format="{{.Id}}" imageName
は私のために働いた。
あなたはこれを試すことができます:
docker inspect --format="{{.Id}}" container_name
このアプローチはOSに依存しません。
NAMES
列にが表示されますdocker ps
)、コンテナーIDが提供されます。代わりに画像名(でIMAGE
列に指定docker ps
)が提供されている場合は、代わりに画像IDを出力します。
実行中のコンテナーのコンテナーIDを取得します。
$docker ps -qf "name=IMAGE_NAME"
-f: Filter output based on conditions provided
-q: Only display numeric container IDs
すべてのコンテナーのコンテナーIDを取得します::
$docker ps -aqf "name=IMAGE_NAME"
-a: all containers
docker ps -fq
機能しなかったが、機能docker ps -qf
した(フラグの順序)
次のコマンド:
docker ps --format 'CONTAINER ID : {{.ID}} | Name: {{.Names}} | Image: {{.Image}} | Ports: {{.Ports}}'
この出力を与えます:
CONTAINER ID : d8453812a556 | Name: peer0.ORG2.ac.ae | Image: hyperledger/fabric-peer:1.4 | Ports: 0.0.0.0:27051->7051/tcp, 0.0.0.0:27053->7053/tcp
CONTAINER ID : d11bdaf8e7a0 | Name: peer0.ORG1.ac.ae | Image: hyperledger/fabric-peer:1.4 | Ports: 0.0.0.0:17051->7051/tcp, 0.0.0.0:17053->7053/tcp
CONTAINER ID : b521f48a3cf4 | Name: couchdb1 | Image: hyperledger/fabric-couchdb:0.4.15 | Ports: 4369/tcp, 9100/tcp, 0.0.0.0:5985->5984/tcp
CONTAINER ID : 14436927aff7 | Name: ca.ORG1.ac.ae | Image: hyperledger/fabric-ca:1.4 | Ports: 0.0.0.0:7054->7054/tcp
CONTAINER ID : 9958e9f860cb | Name: couchdb | Image: hyperledger/fabric-couchdb:0.4.15 | Ports: 4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp
CONTAINER ID : 107466b8b1cd | Name: ca.ORG2.ac.ae | Image: hyperledger/fabric-ca:1.4 | Ports: 0.0.0.0:7055->7054/tcp
CONTAINER ID : 882aa0101af2 | Name: orderer1.o1.ac.ae | Image: hyperledger/fabric-orderer:1.4 | Ports: 0.0.0.0:7050->7050/tcp`enter code here`
コンテナー名に基づいて完全なContainerIdを取得する場合は、次のコマンドを使用します
docker ps --no-trunc -aqf name=containername
Dockerイメージ検査ImageName \ ImageId --format = {{'。ConatinerConfig.Hostname'}}
私の場合、Ubuntu 20.04でTensorflow Dockerコンテナを実行していました。Dockerコンテナを1つのターミナルで実行し、次のように実行しました
docker run -it od
そして、別のターミナルを起動docker ps
し、sudoで以下を実行しました:
sudo docker ps
コンテナIDを取得しました:
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
e4ca1ad20b84 od "/bin/bash" 18 minutes ago
Up 18 minutes unruffled_stonebraker
私が考えることができる最も簡単な方法は、の出力を解析することです docker ps
最新のubuntuイメージをインタラクティブに実行して接続します
docker run -it ubuntu /bin/bash
docker ps
別のターミナルで実行すると、次のようなものが表示されます
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8fddbcbb101c ubuntu:latest "/bin/bash" 10 minutes ago Up 10 minutes gloomy_pasteur
残念ながら、スペースを使用して手動で配置するため、この形式の解析は簡単ではありません。
$ sudo docker ps | sed -e 's/ /@/g'
CONTAINER@ID@@@@@@@@IMAGE@@@@@@@@@@@@@@@COMMAND@@@@@@@@@@@@@CREATED@@@@@@@@@@@@@STATUS@@@@@@@@@@@@@@PORTS@@@@@@@@@@@@@@@NAMES
8fddbcbb101c@@@@@@@@ubuntu:latest@@@@@@@"/bin/bash"@@@@@@@@@13@minutes@ago@@@@@@Up@13@minutes@@@@@@@@@@@@@@@@@@@@@@@@@@@gloomy_pasteur@@@@@@
以下は、出力をJSONに変換するスクリプトです。
https://gist.github.com/mminer/a08566f13ef687c17b39
実際、出力はそれよりも少し便利です。すべてのフィールドの幅は20文字です。
[['CONTAINER ID',0],['IMAGE',20],['COMMAND',40],['CREATED',60],['STATUS',80],['PORTS',100],['NAMES',120]]