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
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.
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
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
Obtenha IDs de contêineres de todos os contêineres ::
$docker ps -aqf "name=IMAGE_NAME"
-a: all containers
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
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]]
docker --list
ou semelhante? Qual é o comando para criar um novo container? etcRespostas:
No Linux:
Ou no OS X, Windows:
onde
containername
está o nome do seu contêiner.Para evitar a obtenção de falsos positivos, como observa @llia Sidorenko, você pode usar âncoras regex como:
explicação:
-q
para o silêncio. saída apenas o ID-a
para todos. funciona mesmo se seu contêiner não estiver em execução-f
para filtro .^
o nome do contêiner deve começar com esta string$
o nome do contêiner deve terminar com esta stringfonte
--no-trunc
bandeira. entãodocker ps --no-trunc -aqf "name=containername"
docker inspect --format="{{.Id}}" imageName
funcionou para mim.Você pode tentar isto:
Essa abordagem é independente do sistema operacional.
fonte
NAMES
coluna comdocker ps
), ele fornecerá o ID do contêiner. Se o nome da imagem (fornecido naIMAGE
coluna comdocker ps
) for fornecido, em vez disso, será gerado o ID da imagem.Obtenha IDs de contêineres de contêineres em execução ::
Obtenha IDs de contêineres de todos os contêineres ::
fonte
docker ps -fq
não funcionou, no entanto,docker ps -qf
funcionou (ordem das bandeiras)O seguinte comando:
Dá esta saída:
fonte
Se você deseja obter o ContainerId completo com base no nome do contêiner, use o seguinte comando
fonte
Inspecionar imagem Docker ImageName \ ImageId --format = {{'. ConatinerConfig.Hostname'}}
fonte
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
E então iniciei outro terminal e executei abaixo
docker ps
com sudo:Obtive com sucesso a id do contêiner:
fonte
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
Se você executar
docker ps
em outro terminal, poderá ver algo comoInfelizmente, analisar este formato não é fácil, pois eles usam espaços para alinhar manualmente as coisas
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]]
fonte