Android

Uruchom polecenie Docker z przykładami

Docker для самых маленьких

Docker для самых маленьких

Spisu treści:

Anonim

Docker to platforma, która umożliwia tworzenie, testowanie i wdrażanie aplikacji jako przenośnych, samowystarczalnych kontenerów, które działają praktycznie w dowolnym miejscu.

Polecenie Uruchom docker run tworzy kontener z danego obrazu i uruchamia kontener za pomocą danej komendy. Jest to jedno z pierwszych poleceń, które powinieneś poznać, kiedy zaczynasz pracę z Dockerem., użyjemy oficjalnego obrazu Nginx, aby pokazać różne sposoby uruchamiania kontenera Docker.

Docker Run Command

Polecenie docker run ma następującą postać:

docker run IMAGE

Nazwa obrazu, z którego należy utworzyć kontener, jest jedynym wymaganym argumentem dla polecenia docker run . Jeśli obraz nie jest obecny w systemie lokalnym, jest pobierany z rejestru.

Jeśli nie określono żadnego polecenia, polecenie określone w instrukcjach CMD lub ENTRYPOINT jest wykonywane podczas uruchamiania kontenera.

Począwszy od wersji 1.13, interfejs Docker został zrestrukturyzowany, a wszystkie polecenia zostały pogrupowane w ramach obiektu, z którym wchodzą w interakcje.

Ponieważ polecenie run współdziała z kontenerami, teraz jest docker container . Składnia nowego polecenia jest następująca:

docker container run IMAGE

Stara składnia sprzed 1.13 jest nadal obsługiwana. Pod maską polecenie docker run jest aliasem do docker container run . Użytkownicy są zachęcani do korzystania z nowej składni poleceń.

Lista wszystkich opcji docker container run znajduje się na stronie dokumentacji dokera.

Uruchom kontener na pierwszym planie

Domyślnie, gdy żadna opcja nie jest podana w poleceniu docker run , proces rootowania jest uruchamiany na pierwszym planie. Oznacza to, że standardowe wejście, wyjście i błąd z procesu rootowania są dołączone do sesji terminala.

docker container run nginx

Dane wyjściowe procesu nginx zostaną wyświetlone na twoim terminalu. Ponieważ nie ma połączeń z serwerem WWW, terminal jest pusty.

Aby zatrzymać kontener, zakończ działający proces Nginx, naciskając CTRL+C

Uruchom kontener w trybie odłączonym

Aby utrzymać działanie kontenera po wyjściu z sesji terminala, uruchom go w trybie odłączonym. Jest to podobne do uruchamiania procesu Linux w tle.

Użyj opcji -d , aby uruchomić odłączony kontener:

docker container run -d nginx

050e72d8567a3ec1e66370350b0069ab5219614f9701f63fcf02e8c8689f04fa

Odłączony kontener zatrzyma się po zakończeniu procesu rootowania.

Możesz wyświetlić działające kontenery za pomocą komendy docker container ls .

Aby podłączyć terminal do odłączonego procesu root kontenera, użyj polecenia docker container attach .

Wyjmij pojemnik po wyjściu

Domyślnie po wyjściu kontenera jego system plików pozostaje w systemie hosta.

Opcje --rm docker run na usunięcie kontenera po jego automatycznym wyjściu:

docker container run --rm nginx

Obraz Nginx może nie być najlepszym przykładem czyszczenia systemu plików kontenera po zamknięciu kontenera. Ta opcja jest zwykle używana w przypadku kontenerów pierwszego planu, które wykonują krótkoterminowe zadania, takie jak testy lub kopie zapasowe bazy danych.

Ustaw nazwę kontenera

W Dockerze każdy kontener jest identyfikowany przez UUID i nazwę. Domyślnie, jeśli nie jest jawnie ustawiony, nazwa kontenera jest generowana automatycznie przez demona Docker.

Użyj opcji --name , aby przypisać niestandardową nazwę do kontenera:

docker container run -d --name my_nginx nginx

Nazwa kontenera musi być unikalna. Jeśli spróbujesz uruchomić inny kontener o tej samej nazwie, pojawi się błąd podobny do tego:

docker: Error response from daemon: Conflict. The container name "/my_nginx" is already in use by container "9…c". You have to remove (or rename) that container to be able to reuse that name.

Uruchom docker container ls -a aby wyświetlić listę wszystkich kontenerów i zobaczyć ich nazwy:

docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9d695c1f5ef4 nginx "nginx -g 'daemon of…" 36 seconds ago Up 35 seconds 80/tcp my_nginx

Znaczące nazwy są przydatne w odniesieniu do kontenera w sieci Docker lub podczas uruchamiania poleceń CLI dokera.

Publikowanie portów kontenerów

Domyślnie, jeśli żadne porty nie są publikowane, proces uruchomiony w kontenerze jest dostępny tylko z wnętrza kontenera.

Porty publikowania oznaczają mapowanie portów kontenerów na porty komputera hosta, dzięki czemu porty są dostępne dla usług poza Docker.

Aby opublikować port, użyj opcji -p w następujący sposób:

-p host_ip:host_port:container_port/protocol

  • Jeśli nie host_ip , domyślnie jest to 0.0.0.0 Jeśli nie określono protocol , domyślnie jest to TCP. Aby opublikować wiele portów, użyj wielu opcji -p .

Aby odwzorować port TCP 80 (nginx) w kontenerze na port 8080 w interfejsie hosta localhost, uruchom:

docker container run --name web_server -d -p 8080:80 nginx

Możesz sprawdzić, czy port został opublikowany, otwierając http://localhost:8080 w przeglądarce lub uruchamiając następujące polecenie curl na hoście Docker:

curl -I

Dane wyjściowe będą wyglądać mniej więcej tak:

HTTP/1.1 200 OK Server: nginx/1.17.6 Date: Tue, 26 Nov 2019 22:55:59 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 19 Nov 2019 12:50:08 GMT Connection: keep-alive ETag: "5dd3e500-264" Accept-Ranges: bytes

Udostępnianie danych (woluminy montażowe)

Po zatrzymaniu kontenera wszystkie dane generowane przez kontener są usuwane. Woluminy dokowania są preferowanym sposobem utrwalania danych i udostępniania ich w wielu kontenerach.

Aby tworzyć woluminy i zarządzać nimi, użyj opcji -p w następujący sposób:

-v host_src:container_dest:options

  • host_src może być bezwzględną ścieżką do pliku lub katalogu na hoście lub nazwanym woluminie. Test_danych jest bezwzględną ścieżką do pliku lub katalogu w kontenerze. Opcjami mogą być rw (odczyt-zapis) i ro (tylko do odczytu)). Jeśli nie podano żadnej opcji, domyślnie jest to rw .

Aby wyjaśnić, jak to działa, utwórzmy katalog na hoście i umieść w nim plik index.html :

mkdir public_html echo "Testing Docker Volumes" > public_html/index.html

Następnie zamontuj katalog public_html w /usr/share/nginx/html w kontenerze:

docker run --name web_server -d -p 8080:80 -v $(pwd)/public_html:/usr/share/nginx/html nginx

Zamiast określać bezwzględną ścieżkę do public_html , używamy komendy $(pwd) , która drukuje bieżący katalog roboczy.

Teraz, jeśli wpiszesz http://localhost:8080 w przeglądarce, powinieneś zobaczyć zawartość pliku index.html . Możesz także użyć curl :

curl

Testing Docker Volumes

Uruchom kontener interaktywnie

W przypadku interaktywnych procesów, takich jak bash , użyj opcji -i i -t aby uruchomić kontener.

Opcja -it mówi Dockerowi, aby trzymał standardowe wejście podłączone do terminala i przydzielił pseudo-tty:

docker container run -it nginx /bin/bash

Powłoka Bash kontenera zostanie dołączona do terminala, a wiersz poleceń zmieni się:

root@1da70f1937f5:/#

Teraz możesz wchodzić w interakcje z powłoką kontenera i uruchamiać w niej dowolne polecenie.

W tym przykładzie podaliśmy polecenie ( /bin/bash ) jako argument do polecenia docker run dokera, które zostało wykonane zamiast polecenia określonego w pliku Dockerfile.

Wniosek

Docker to standard pakowania i wdrażania aplikacji oraz niezbędny element CI / CD, automatyzacji i DevOps.

Polecenie uruchamiania kontenera dokowanego służy do tworzenia i uruchamiania kontenerów Docker.

doker