Próbuję teraz, nie mogę znaleźć żadnej próbki online. dziękuję za odrzucenie głosu, lubię szczęśliwych ludzi.
Dimitri Kopriwa
Przeczytaj artykuł Jak pytać i podaj minimalny powtarzalny przykład . Jak wygląda docker --listlub podobnie? Jakie jest polecenie utworzenia nowego kontenera? etc
fedorqui 'SO przestań szkodzić'
1
Myślę, że moje pytanie jest dość jasne, proszę zagłosuj, udzielę odpowiedzi jak najszybciej.
Dimitri Kopriwa
1
W bash nie ma czegoś takiego jak „pojemnik”. Może masz na myśli kontenery docker ? Jeśli tak, osoby oglądające tag „bash” mogą się pomylić. jakkolwiek otrzymujesz identyfikator kontenera z nazwy, jestem pewien, że jest to rzeczywista komenda i nie ma nic wspólnego z językiem programowania bash.
djhaskin987
Odpowiedzi:
196
W systemie Linux:
sudo docker ps -aqf "name=containername"
Lub w OS X, Windows:
docker ps -aqf "name=containername"
gdzie containernamejest nazwa twojego kontenera.
Aby uniknąć fałszywych alarmów, jak zauważa @llia Sidorenko, możesz użyć kotwic wyrażeń regularnych w następujący sposób:
docker ps -aqf "name=^containername$"
wyjaśnienie:
-qdla ciszy. wyprowadza tylko ID
-adla wszystkich. działa, nawet jeśli kontener nie jest uruchomiony
uwaga dla każdego, kto się na to natknie: sudo nie jest już wymagane w Linuksie, jeśli dodasz siebie do grupy
docker
9
Uważaj na tę odpowiedź, ponieważ nazwa = nazwa_zbiornika jest w rzeczywistości symbolem wieloznacznym i będzie pasować do wszystkiego, co ma nazwę (. *) Nazwa_zawieracza (. *)
Ilia Sidorenko
5
@ekkis używa --no-truncflagi. więcdocker ps --no-trunc -aqf "name=containername"
code_monk
3
Od 07.01.2019 to nie działa dla mnie. Używam Dockera 17.06.0. Polecenie docker inspect --format="{{.Id}}" imageNamezadziałało dla mnie.
PatS
1
@code_monk, Dzięki za potwierdzenie. Dodałem komentarz do odpowiedzi Rosberga Linharesa, skąd wziąłem pomysł, i zasugerowałem zmianę jego odpowiedzi na poprawną.
PatS
37
Możesz spróbować tego:
docker inspect --format="{{.Id}}" container_name
To podejście jest niezależne od systemu operacyjnego.
To również daje mi identyfikator kontenera. Pełny identyfikator kontenera, a nie tylko obcięte pierwsze 12 znaków.
cowlinator
Kocham tą jedną! Dzięki. 👍
GollyJer
@vijay @RosbergLinhares Jeśli podasz nazwę kontenera (podaną w NAMESkolumnie z docker ps), podasz identyfikator kontenera. Jeśli zamiast tego zostanie podana nazwa obrazu (podana w IMAGEkolumnie z docker ps), zamiast tego zostanie podany identyfikator obrazu.
Wolfson
12
Uzyskaj identyfikatory uruchomionych kontenerów:
$docker ps -qf "name=IMAGE_NAME"
-f: Filter output based on conditions provided
-q: Only display numeric container IDs
Uzyskaj identyfikatory wszystkich kontenerów:
$docker ps -aqf "name=IMAGE_NAME"
-a: all containers
Proszę dodać wyjaśnienie do swojej odpowiedzi. Odpowiedzi zawierające tylko kod (lub w tym przypadku tylko polecenie) nie są pomocne dla nowych użytkowników, którzy mogą nie rozumieć, co właściwie robi polecenie lub kod. Sprawdź programowanie kultowych ładunków, aby dowiedzieć się, dlaczego tak jest.
Max Vollmer
0
W moim przypadku korzystałem z kontenera Docker Tensorflow w Ubuntu 20.04: Uruchom kontener Docker w jednym terminalu, uruchomiłem go z
docker run -it od
A potem uruchomiłem kolejny terminal i uruchomiłem poniżej docker psz sudo:
sudo docker ps
Udało mi się uzyskać identyfikator kontenera:
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
e4ca1ad20b84 od "/bin/bash" 18 minutes ago
Up 18 minutes unruffled_stonebraker
Właściwie praca z wyjściem jest nieco wygodniejsza. Każde pole ma szerokość 20 znaków.
[['CONTAINER ID',0],['IMAGE',20],['COMMAND',40],['CREATED',60],['STATUS',80],['PORTS',100],['NAMES',120]]
docker --list
lub podobnie? Jakie jest polecenie utworzenia nowego kontenera? etcOdpowiedzi:
W systemie Linux:
Lub w OS X, Windows:
gdzie
containername
jest nazwa twojego kontenera.Aby uniknąć fałszywych alarmów, jak zauważa @llia Sidorenko, możesz użyć kotwic wyrażeń regularnych w następujący sposób:
wyjaśnienie:
-q
dla ciszy. wyprowadza tylko ID-a
dla wszystkich. działa, nawet jeśli kontener nie jest uruchomiony-f
do filtra .^
nazwa kontenera musi zaczynać się od tego ciągu$
nazwa kontenera musi kończyć się tym ciągiemźródło
--no-trunc
flagi. więcdocker ps --no-trunc -aqf "name=containername"
docker inspect --format="{{.Id}}" imageName
zadziałało dla mnie.Możesz spróbować tego:
To podejście jest niezależne od systemu operacyjnego.
źródło
NAMES
kolumnie zdocker ps
), podasz identyfikator kontenera. Jeśli zamiast tego zostanie podana nazwa obrazu (podana wIMAGE
kolumnie zdocker ps
), zamiast tego zostanie podany identyfikator obrazu.Uzyskaj identyfikatory uruchomionych kontenerów:
Uzyskaj identyfikatory wszystkich kontenerów:
źródło
docker ps -fq
nie zadziałało, ale zadziałałodocker ps -qf
(kolejność flag)Następujące polecenie:
Daje to wyjście:
źródło
Jeśli chcesz uzyskać pełne ContainerId na podstawie nazwy kontenera, użyj następującego polecenia
źródło
Inspekcja obrazu platformy Docker ImageName \ ImageId --format = {{'. ConatinerConfig.Hostname'}}
źródło
W moim przypadku korzystałem z kontenera Docker Tensorflow w Ubuntu 20.04: Uruchom kontener Docker w jednym terminalu, uruchomiłem go z
A potem uruchomiłem kolejny terminal i uruchomiłem poniżej
docker ps
z sudo:Udało mi się uzyskać identyfikator kontenera:
źródło
Najprostszym sposobem, jaki przychodzi mi do głowy, jest przeanalizowanie danych wyjściowych
docker ps
Uruchommy interaktywnie najnowszy obraz Ubuntu i połączmy się z nim
Jeśli uruchomisz
docker ps
inny terminal, zobaczysz coś takiegoNiestety, analiza tego formatu nie jest łatwa, ponieważ używają spacji do ręcznego wyrównywania rzeczy
Oto skrypt, który konwertuje dane wyjściowe do formatu JSON.
https://gist.github.com/mminer/a08566f13ef687c17b39
Właściwie praca z wyjściem jest nieco wygodniejsza. Każde pole ma szerokość 20 znaków.
[['CONTAINER ID',0],['IMAGE',20],['COMMAND',40],['CREATED',60],['STATUS',80],['PORTS',100],['NAMES',120]]
źródło