Kontener to jedno z podstawowych pojęć Dockera. Konteneryzacja pozwala na uruchomienie procesu (programu) w odizolowanym środowisku zawierającym wszystkie zależności wymagane do jego działania.
W tym artykule zostało zdefiniowanie pojęcie kontenera oraz przedstawiono podstawowe operacje, jakie można wykonać na kontenerze.
*Ten wpis jest częścią serii wpisów o Dockerze. Jeżeli jakieś pojęcie zostało użyte bez wyjaśnienia, to prawdopodobnie zostało już wprowadzone w jednym z wcześniejszych wpisów.
** Zachęcamy również do zapoznania się z odświeżonymi w grudniu 2021 i styczniu 2022 artykułami nt. Dockera, które znajdziecie pod tym wpisem.
Czym jest kontener i do czego służy?
Kontener jest ujednoliconą kolekcją warstw składającą się z warstw tylko do odczytu pochodzących z obrazu kontenera i pojedynczej warstwy do odczytu i zapisu. Warstwa do odczytu i zapisu umożliwia działanie procesów uruchamianych w kontenerze.
Przeznaczeniem kontenera jest wykonywanie pojedynczego zadania (procesu). Kontener może znajdować się w jednym ze stanów:
- created – został stworzony, ale jeszcze nie jest uruchomiony,
- restarting – w trakcie ponownego uruchamiania swojego procesu,
- up – wykonuje swój proces,
- paused – proces kontenera został wstrzymany,
- exited – kontener zakończył wykonywanie swojego procesu.
Tworzenie i uruchamianie
Kontener można stworzyć i uruchomić za pomocą polecenia:
docker run [nazwa lub id obrazu]
Powyższe polecenie zostało przedstawione z minimalną liczbą parametrów. W praktyce jest ono wykonywane z różnymi opcjami, które określają właściwości kontenera.
Na początku warto poznać opcję --name
, za pomocą której możemy nazwać kontener. Jeżeli nie podamy własnej nazwy, wtedy wygeneruje ją Docker. Przyjazna nazwa będzie pomocna podczas wykonywania poleceń na kontenerze.
docker run --name="ubuntu-container" ubuntu:15:10
Kontener będzie uruchomiony tak długo, jak będzie wymagało tego działające w nim polecenie. Domyślnie kontener uruchamia polecenie określone w kodzie źródłowym obrazu. W przypadku obrazu ubuntu
jest to /bin/bash
. Po uruchomieniu, kontener ubuntu-container
wykonał polecenie bin/bash,
będąc przez niezauważalnie krótki czas w stanie up, a następnie zakończył działanie przechodząc w stan exited.
Kontener domyślnie uruchomi się jako proces pierwszoplanowy. Żeby uruchomić kontener w tle, należy dodać opcję -d
(--detach=true
) do polecenia docker run
.
docker run -d [id lub nazwa obrazu]
Czasami chcemy użyć kontenera tylko po to, żeby jednokrotnie wykonać jego polecenie. W takiej sytuacji warto uruchomić kontener z opcją --rm=true
, która spowoduje, że kontener zostanie automatycznie usunięty po zakończeniu działania.
docker run --rm=true [id lub nazwa kontenera]
Wyświetlanie
Listę wszystkich kontenerów można wyświetlić za pomocą polecenia:
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
64d9865cea19 ubuntu:15.10 "/bin/bash" 23 hours ago Exited (0) ubuntu-container
Zatrzymywanie
W celu zatrzymania kontenera należy wykonać polecenie:
docker stop [id lub nazwa kontenera]
Usuwanie
Kontener można usunąć za pomocą polecenia:
docker rm [id lub nazwa kontenera]
Docker nie posiada polecenia usuwającego wszystkie kontenery, ale można je uzyskać, składając polecenie wyświetlające identyfikatory wszystkich kontenerów i polecenie usuwające kontener. Usunięcie wszystkich kontenerów może być szczególnie przydatne na początku nauki.
docker rm $(docker ps -a -q)
* Spis wpisów w serii
- Obraz: podstawowe operacje
- Kontener: podstawowe operacje
- Kontener: polecenia
- Kontener: strumienie we/wy i przeglądanie plików
- Kontener: udostępnianie portów
- Kontener: współdzielenie plików
- Kontener: zmienne środowiskowe
Wielkie dzięki za wprowadzenie do Dockera. Czytam i działam z wypiekami :). Rewelacja