Obter o id do contêiner do docker do nome do contêiner

111

Qual é o comando para obter a ID do contêiner do docker do nome do contêiner?

Dimitri Kopriwa
fonte
4
Estou tentando agora, não consegui encontrar nenhuma amostra online. obrigado por votar, gosto de pessoas felizes.
Dimitri Kopriwa
Você deve ler Como perguntar e fornecer um exemplo reproduzível mínimo . Como é docker --listou semelhante? Qual é o comando para criar um novo container? etc
fedorqui 'ASSIM, pare de prejudicar'
1
Acho que minha pergunta é bem clara, por favor vote e darei a resposta o mais rápido possível.
Dimitri Kopriwa
1
Não existe um "recipiente" que eu conheça no bash. Talvez você queira dizer contêineres docker ? Nesse caso, as pessoas que assistem à tag "bash" podem ficar confusas. no entanto, você obtém o id do contêiner do nome, tenho certeza de que é um comando real e não tem nada a ver com a linguagem de programação bash.
djhaskin987

Respostas:

191

No Linux:

sudo docker ps -aqf "name=containername"

Ou no OS X, Windows:

docker ps -aqf "name=containername"

onde containernameestá o nome do seu contêiner.

Para evitar a obtenção de falsos positivos, como observa @llia Sidorenko, você pode usar âncoras regex como:

docker ps -aqf "name=^containername$"

explicação:

  • -qpara o silêncio. saída apenas o ID
  • -apara todos. funciona mesmo se seu contêiner não estiver em execução
  • -fpara filtro .
  • ^o nome do contêiner deve começar com esta string
  • $o nome do contêiner deve terminar com esta string
code_monk
fonte
7
uma observação para qualquer um que se deparar com isso: sudo não é mais necessário no Linux se você se adicionar ao grupo docker (altamente recomendado)
code_monk
9
Tenha cuidado com esta resposta, já que nome = nome_de_contém é na verdade um caractere curinga e corresponderá a qualquer coisa com nome (. *) Nome de usuário (. *)
Ilia Sidorenko
5
@ekkis usa a --no-truncbandeira. entãodocker ps --no-trunc -aqf "name=containername"
code_monk
3
Em 07/01/2019, isso não funcionou para mim. Estou usando o docker v17.06.0. O comando docker inspect --format="{{.Id}}" imageNamefuncionou para mim.
PatS de
1
@code_monk, Obrigado pela confirmação. Acrescentei um comentário à resposta de Rosberg Linhares que é de onde tirei a ideia e sugeri que sua resposta fosse alterada para a resposta correta.
PatS de
37

Você pode tentar isto:

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

Essa abordagem é independente do sistema operacional.

Rosberg Linhares
fonte
5
Isso retorna IMAGE ID NOT CONTAINER ID
vijay
2
@vijay, para mim, isso fornece a ID do contêiner: https://i.ibb.co/BPwyxDj/Docker-Container-Id.png
Rosberg Linhares
Isso também me dá o ID do contêiner. O ID completo do contêiner, não apenas os primeiros 12 caracteres truncados.
cowlinator
Amo este! Obrigado. 👍
GollyJer
@vijay @RosbergLinhares se você fornecer o nome do contêiner (fornecido na NAMEScoluna com docker ps), ele fornecerá o ID do contêiner. Se o nome da imagem (fornecido na IMAGEcoluna com docker ps) for fornecido, em vez disso, será gerado o ID da imagem.
Wolfson,
12
  1. Obtenha IDs de contêineres de contêineres em execução ::

    $docker ps -qf "name=IMAGE_NAME"
    
        -f: Filter output based on conditions provided
        -q: Only display numeric container IDs
    
  2. Obtenha IDs de contêineres de todos os contêineres ::

    $docker ps -aqf "name=IMAGE_NAME"
    
        -a: all containers
    
Kalyani Chaudhari
fonte
2
docker ps -fq não funcionou, no entanto, docker ps -qffuncionou (ordem das bandeiras)
thom_nic
4

O seguinte comando:

docker ps --format 'CONTAINER ID : {{.ID}} | Name: {{.Names}} | Image:  {{.Image}} |  Ports: {{.Ports}}'

Dá esta saída:

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`
Sidharth Srivastava
fonte
3

Se você deseja obter o ContainerId completo com base no nome do contêiner, use o seguinte comando

 docker ps --no-trunc -aqf name=containername
Girdhar Singh Rathore
fonte
0

Inspecionar imagem Docker ImageName \ ImageId --format = {{'. ConatinerConfig.Hostname'}}

rajat shukla
fonte
Por favor, adicione uma explicação à sua resposta. Respostas que são apenas código (ou, neste caso, apenas comando) não são úteis para novos usuários que podem não entender o que o comando ou código realmente faz. Procure na programação de cultos de carga por que isso é ruim.
Max Vollmer
0

No meu caso, eu estava executando o contêiner do Tensorflow Docker no Ubuntu 20.04: execute o contêiner do docker em um terminal, eu o executei com

docker run -it od

E então iniciei outro terminal e executei abaixo docker pscom sudo:

sudo docker ps

Obtive com sucesso a id do contêiner:

CONTAINER ID        IMAGE               COMMAND             CREATED             
STATUS              PORTS               NAMES
e4ca1ad20b84        od                  "/bin/bash"         18 minutes ago      
Up 18 minutes                           unruffled_stonebraker
Imran
fonte
-2

A maneira mais simples que consigo pensar é analisar a saída de docker ps

Vamos rodar a última imagem do ubuntu interativamente e conectar a ela

docker run -it ubuntu /bin/bash

Se você executar docker psem outro terminal, poderá ver algo como

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
8fddbcbb101c        ubuntu:latest       "/bin/bash"         10 minutes ago      Up 10 minutes                           gloomy_pasteur

Infelizmente, analisar este formato não é fácil, pois eles usam espaços para alinhar manualmente as coisas

$ 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@@@@@@

Aqui está um script que converte a saída em JSON.

https://gist.github.com/mminer/a08566f13ef687c17b39

Na verdade, a saída é um pouco mais conveniente de se trabalhar do que isso. Cada campo tem 20 caracteres de largura. [['CONTAINER ID',0],['IMAGE',20],['COMMAND',40],['CREATED',60],['STATUS',80],['PORTS',100],['NAMES',120]]

Gregory Nisbet
fonte