Szukaj…


Składnia

  • docker rm [OPCJE] CONTAINER [CONTAINER ...]
  • doker dołączyć CONTAINER [OPCJE]
  • docker exec [OPCJE] CONTAINER COMMAND [ARG ...]
  • doker ps [OPCJE]
  • dzienniki dokerów [OPCJE] POJEMNIK
  • doker sprawdź [OPCJE] POJEMNIK | OBRAZ [POJEMNIK | OBRAZ ...]

Uwagi

  • W powyższych przykładach ilekroć kontener jest parametrem polecenia dokera, jest on wymieniony jako <container> lub container id lub <CONTAINER_NAME> . We wszystkich tych miejscach możesz podać nazwę kontenera lub identyfikator kontenera, aby określić kontener.

Wykaz pojemników

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
2bc9b1988080        redis               "docker-entrypoint.sh"   2 weeks ago         Up 2 hours          0.0.0.0:6379->6379/tcp    elephant-redis
817879be2230        postgres            "/docker-entrypoint.s"   2 weeks ago         Up 2 hours          0.0.0.0:65432->5432/tcp   pt-postgres

docker ps samodzielnie drukuje tylko aktualnie uruchomione kontenery. Aby wyświetlić wszystkie kontenery (w tym zatrzymane), użyj flagi -a :

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS                     NAMES
9cc69f11a0f7        docker/whalesay     "ls /"                   26 hours ago        Exited (0) 26 hours ago                             berserk_wozniak
2bc9b1988080        redis               "docker-entrypoint.sh"   2 weeks ago         Up 2 hours                0.0.0.0:6379->6379/tcp    elephant-redis
817879be2230        postgres            "/docker-entrypoint.s"   2 weeks ago         Up 2 hours                0.0.0.0:65432->5432/tcp   pt-postgres

Aby wyświetlić listę kontenerów o określonym statusie, użyj opcji wiersza polecenia -f aby przefiltrować wyniki. Oto przykład wylistowania wszystkich kontenerów, które opuściły:

$ docker ps -a -f status=exited
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS                     NAMES
9cc69f11a0f7        docker/whalesay     "ls /"                   26 hours ago        Exited (0) 26 hours ago

Możliwe jest również wyświetlenie tylko identyfikatorów kontenerów za pomocą przełącznika -q . To bardzo ułatwia obsługę wyniku za pomocą innych narzędzi uniksowych (takich jak grep i awk ):

$ docker ps -aq
9cc69f11a0f7
2bc9b1988080
817879be2230

Podczas uruchamiania kontenera z docker run --name mycontainer1 podajesz konkretną nazwę, a nie losową nazwę (w formie mood_famous, np. Nostalgic_stallman), i można łatwo je znaleźć za pomocą takiego polecenia

docker ps -f name=mycontainer1

Odwoływanie się do kontenerów

Polecenia dokera, które przyjmują nazwę kontenera, akceptują trzy różne formy:

Rodzaj Przykład
Pełny UUID 9cc69f11a0f76073e87f25cb6eaf0e079fbfbd1bc47c063bcd25ed3722a8cc4a
Krótki UUID 9cc69f11a0f7
Nazwa berserk_wozniak

Użyj docker ps aby wyświetlić te wartości dla kontenerów w systemie.

Identyfikator UUID jest generowany przez Docker i nie można go modyfikować. Możesz podać nazwę kontenera, gdy go uruchomisz, docker run --name <given name> <image> . Docker wygeneruje losową nazwę kontenera, jeśli nie zostanie podana podczas uruchamiania kontenera.

UWAGA : Wartość UUID (lub „krótkiego” UUID) może mieć dowolną długość, o ile podana wartość jest unikalna dla jednego kontenera

Uruchamianie i zatrzymywanie pojemników

Aby zatrzymać działający kontener:

docker stop <container> [<container>...]

Spowoduje to wysłanie głównego procesu w kontenerze SIGTERM, a następnie SIGKILL, jeśli nie zatrzyma się w okresie karencji. Nazwa każdego pojemnika jest drukowana po zatrzymaniu.

Aby uruchomić zatrzymany kontener:

docker start <container> [<container>...]

Spowoduje to uruchomienie każdego kontenera przekazanego w tle; nazwa każdego pojemnika jest drukowana od samego początku. Aby uruchomić kontener na pierwszym planie, przekaż flagę -a ( --attach ).

Wyświetl listę kontenerów w niestandardowym formacie

docker ps --format 'table {{.ID}}\t{{.Names}}\t{{.Status}}'

Znalezienie określonego pojemnika

docker ps --filter name=myapp_1

Znajdź adres IP kontenera

Aby znaleźć adres IP swojego kontenera, użyj:

docker inspect <container id> | grep IPAddress

lub użyj inspekcji dokera

docker inspect --format '{{ .NetworkSettings.IPAddress }}' ${CID}

Ponowne uruchamianie kontenera dokowanego

docker restart <container> [<container>...]

Opcja --time: Sekundy czekać na przystanku przed zabiciem pojemnik (domyślnie 10)

docker restart <container> --time 10

Usuń, usuń i wyczyść pojemniki

docker rm może być użyty do usunięcia określonych kontenerów, takich jak ten:

docker rm <container name or id>

Aby usunąć wszystkie kontenery, możesz użyć tego wyrażenia:

docker rm $(docker ps -qa)

Domyślnie doker nie usuwa działającego kontenera. Każdy działający kontener wygeneruje komunikat ostrzegawczy i nie zostanie usunięty. Wszystkie inne pojemniki zostaną usunięte.

Alternatywnie możesz użyć xargs :

docker ps -aq -f status=exited | xargs -r docker rm 

Gdzie docker ps -aq -f status=exited zwróci listę identyfikatorów kontenerów o statusie „Opuszczono”.

Ostrzeżenie: wszystkie powyższe przykłady usuwają tylko „zatrzymane” pojemniki.

Aby usunąć kontener, niezależnie od tego, czy jest zatrzymany, możesz użyć flagi wymuszenia -f :

docker rm -f <container name or id>

Aby usunąć wszystkie kontenery, niezależnie od stanu:

docker rm -f $(docker ps -qa)

Jeśli chcesz usunąć tylko kontenery ze statusem dead :

docker rm $(docker ps --all -q -f status=dead)

Jeśli chcesz usunąć tylko kontenery o statusie exited :

docker rm $(docker ps --all -q -f status=exited)

Są to wszystkie permutacje filtrów używanych podczas wyświetlania kontenerów .

Aby usunąć zarówno niechciane kontenery, jak i wiszące obrazy, które używają miejsca po wersji 1.3 , użyj następujących poleceń (podobnie do narzędzia uniksowego df ):

$ docker system df

Aby usunąć wszystkie nieużywane dane:

$ docker system prune 

Uruchom polecenie na już istniejącym kontenerze dokera

docker exec -it <container id> /bin/bash

Często loguje się już działający kontener, aby wykonać szybkie testy lub zobaczyć, co robi aplikacja. Często oznacza to złe praktyki korzystania z kontenerów z powodu dzienników, a zmienione pliki należy umieszczać w woluminach. Ten przykład pozwala nam zalogować się do kontenera. To zakłada, że / bin / bash jest dostępny w kontenerze, może to być / bin / sh lub coś innego.

docker exec <container id> tar -czvf /tmp/backup.tgz /data
docker cp <container id>:/tmp/backup.tgz .

Ten przykład archiwizuje zawartość katalogu danych w tar. Następnie z docker cp możesz go odzyskać.

Dzienniki kontenerowe

Usage:  docker logs [OPTIONS] CONTAINER

Fetch the logs of a container

  -f, --follow=false        Follow log output
  --help=false              Print usage
  --since=                  Show logs since timestamp
  -t, --timestamps=false    Show timestamps
  --tail=all                Number of lines to show from the end of the logs

Na przykład:

$ docker ps
CONTAINER ID    IMAGE    COMMAND                 CREATED     STATUS       PORTS
ff9716dda6cb    nginx    "nginx -g 'daemon off"  8 days ago  Up 22 hours  443/tcp, 0.0.0.0:8080->80/tcp 

$ docker logs ff9716dda6cb
xx.xx.xx.xx - - [15/Jul/2016:14:03:44 +0000] "GET /index.html HTTP/1.1" 200 511 "https://google.com" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36"
xx.xx.xx.xx - - [15/Jul/2016:14:03:44 +0000] "GET /index.html HTTP/1.1" 200 511 "https://google.com" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36"

Połącz się z instancją działającą jako demon

Istnieją dwa sposoby osiągnięcia tego, pierwszy i najbardziej znany to:

docker attach --sig-proxy=false <container>

Ten dosłownie dołącza twoją bash do bash kontenera, co oznacza, że jeśli masz działający skrypt, zobaczysz wynik.

Aby odłączyć, po prostu wpisz: Ctl-P Ctl-Q

Ale jeśli potrzebujesz bardziej przyjaznego sposobu i aby móc tworzyć nowe instancje bash, po prostu uruchom następujące polecenie:

docker exec -it <container> bash

Kopiowanie pliku z / do kontenerów

od kontenera do hosta

docker cp CONTAINER_NAME:PATH_IN_CONTAINER PATH_IN_HOST

od hosta do kontenera

docker cp PATH_IN_HOST CONTAINER_NAME:PATH_IN_CONTAINER

Jeśli użyję jess / transmisji z

https://hub.docker.com/r/jess/transmission/builds/bsn7eqxrkzrhxazcuytbmzp/

, pliki w kontenerze znajdują się w / transmisja / pobieranie

a mój bieżący katalog na hoście to / home / $ USER / abc, po

docker cp transmission_id_or_name:/transmission/download .

Pliki zostaną skopiowane do

/home/$USER/abc/transmission/download

nie możesz, używając programu docker cp skopiuj tylko jeden plik, skopiuj drzewo katalogów i pliki

Usuń, usuń i wyczyść woluminy dokerów

Woluminy dokerów nie są automatycznie usuwane po zatrzymaniu kontenera. Aby usunąć powiązane woluminy po zatrzymaniu kontenera:

docker rm -v <container id or name>

Jeśli nie podano flagi -v , wolumin pozostaje na dysku jako „wolumin wiszący”. Aby usunąć wszystkie wiszące woluminy:

docker volume rm $(docker volume ls -qf dangling=true)

Filtr docker volume ls -qf dangling=true zwróci listę nazw woluminów docker volume ls -qf dangling=true , w tym nieoznaczonych, które nie są dołączone do kontenera.

Alternatywnie możesz użyć xargs :

docker volume ls -f dangling=true -q | xargs --no-run-if-empty docker volume rm

Eksportuj i importuj systemy plików kontenerów Docker

Możliwe jest zapisanie zawartości systemu plików kontenera Docker do pliku archiwum tarball. Jest to przydatne w przypadku szczypania do przenoszenia systemów plików kontenera na różne hosty, na przykład jeśli kontener bazy danych zawiera ważne zmiany i nie jest możliwe, aby replikować te zmiany w innym miejscu. Należy pamiętać, że lepiej jest utworzyć całkowicie nowy kontener ze zaktualizowanego obrazu za pomocą polecenia docker run docker-compose.yml pliku docker-compose.yml , zamiast eksportować i przenosić system plików kontenera. Częścią siły Dockera jest sprawdzalność i rozliczalność deklaratywnego stylu tworzenia obrazów i kontenerów. Używając docker export i docker import , ta moc jest stłumiona z powodu zaciemnienia zmian wprowadzonych w systemie plików kontenera z jego pierwotnego stanu.

docker export -o redis.tar redis

Powyższe polecenie utworzy pusty obraz, a następnie wyeksportuje system plików kontenera redis do tego pustego obrazu. Aby zaimportować z archiwum tarball, użyj:

docker import ./redis.tar redis-imported:3.0.7

To polecenie utworzy redis-imported:3.0.7 , z którego można tworzyć kontenery. Możliwe jest również tworzenie zmian podczas importu, a także ustawienie komunikatu zatwierdzenia:

docker import -c="ENV DEBUG true" -m="enable debug mode" ./redis.tar redis-changed

Dyrektywy Dockerfile dostępne do użytku z -c opcji wiersza poleceń są CMD , ENTRYPOINT , ENV , EXPOSE , ONBUILD , USER , VOLUME , WORKDIR .



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow