コンテナー名からDockerコンテナーIDを取得する


110

コンテナー名からdockerコンテナーIDを取得するコマンドは何ですか?


4
今試してみましたが、オンラインでサンプルが見つかりませんでした。投票してくれてありがとう、私は幸せな人が好きです。
Dimitri Kopriwa

How to Askを読み、最小限の再現可能な例を提供する必要があります。どのようにdocker --list同様または類似の外観は?新しいコンテナを作成するコマンドは何ですか?etc
fedorqui 'SO stop harming'

1
私の質問はかなり明確だと思います。投票してください。できるだけ早く回答します。
Dimitri Kopriwa

1
私がbashで知っている「コンテナ」のようなものはありません。おそらくあなたはドッカーコンテナを意味しますか?もしそうなら、「bash」タグを見ている人々は混乱するかもしれません。ただし、名前からコンテナーIDを取得しますが、これは実際のコマンドであり、bashプログラミング言語とは関係ありません。
djhaskin987

回答:


190

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以下のためのフィルタ
  • ^コンテナ名はこの文字列で始まる必要があります
  • $コンテナ名はこの文字列で終わる必要があります

7
これに遭遇した人への注意:自分を
docker

9
name = containernameは実際にはワイルドカードであり、名前(。*)containername(。*)と一致するため、この回答には注意してください
Ilia Sidorenko

5
@ekkisは--no-truncフラグを使用します。そうdocker ps --no-trunc -aqf "name=containername"
code_monk

3
2019-01-07現在、これは私にはうまくいきませんでした。docker v17.06.0を使用しています。コマンドdocker inspect --format="{{.Id}}" imageNameは私のために働いた。
PatS

1
@code_monk、確認ありがとうございます。Rosberg Linharesの回答にコメントを追加しました。これは私がアイデアを得た場所であり、彼の回答を正しい回答に変更することを提案しました。
PatS

37

あなたはこれを試すことができます:

docker inspect --format="{{.Id}}" container_name

このアプローチはOSに依存しません。


5
これはIMAGE ID NOT CONTAINER ID
vijay

2
@vijay、私にとってこれはコンテナIDを与えます:https
Rosberg Linhares

これにより、コンテナIDも取得できます。切り捨てられた最初の12文字だけでなく、完全なコンテナID。
カウリネーター

これ大好き!ありがとう。👍
GollyJer

@vijay @RosbergLinharesコンテナーの名前を指定すると(NAMES列にが表示されますdocker ps)、コンテナーIDが提供されます。代わりに画像名(でIMAGE列に指定docker ps)が提供されている場合は、代わりに画像IDを出力します。
Wolfson

12
  1. 実行中のコンテナーのコンテナーIDを取得します。

    $docker ps -qf "name=IMAGE_NAME"
    
        -f: Filter output based on conditions provided
        -q: Only display numeric container IDs
    
  2. すべてのコンテナーのコンテナーIDを取得します::

    $docker ps -aqf "name=IMAGE_NAME"
    
        -a: all containers
    

2
docker ps -fq 機能しなかったが、機能docker ps -qfした(フラグの順序)
thom_nic

4

次のコマンド:

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`

3

コンテナー名に基づいて完全なContainerIdを取得する場合は、次のコマンドを使用します

 docker ps --no-trunc -aqf name=containername

0

Dockerイメージ検査ImageName \ ImageId --format = {{'。ConatinerConfig.Hostname'}}


回答に説明を追加してください。コードのみ(またはこの場合はコマンドのみ)の回答は、コマンドまたはコードが実際に何を行うのかを理解していない可能性がある新規ユーザーには役立ちません。なぜこれが悪いのかについてカーゴカルトプログラミングを調べてください。
Max Vollmer

0

私の場合、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

-2

私が考えることができる最も簡単な方法は、の出力を解析することです 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]]

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.