Jak zarządzać kontenerami Docker

Jak zarządzać kontenerami Docker

Opublikowany: 10 kwietnia 2024

Docker

Docker to platforma programowa opracowana w celu ułatwienia wdrażania aplikacji opartych na koncepcji kontenerów. Platforma może służyć do tworzenia, testowania i dystrybucji aplikacji poprzez zebranie ich w znormalizowanych jednostkach zwanych kontenerami.

Kontenery Docker są wyizolowanymi środowiskami, w których aplikacje mogą być uruchamiane bez ingerencji w pozostałe procesy. Podobnie jak w przypadku maszyn wirtualnych, określone zasoby obliczeniowe są przydzielane do każdego kontenera. Docker nie wymaga jednak emulacji sprzętu, gdyż używa fizycznego sprzętu hosta dla każdego kontenera.

Ze względu na oszczędność zasobów i zdolność do generowania lepszej wydajności systemu, konteneryzację można postrzegać jako naturalną ewolucję wirtualizacji. Co więcej, ponieważ zawierają one wszystko, co jest potrzebne do poprawnego działania aplikacji - w tym biblioteki i narzędzia systemowe - kontenery upraszczają wdrażanie aplikacji i eliminują problemy związane z konfiguracją środowiska wykonawczego.

W niniejszym poradniku przedstawimy efektywne zarządzanie kontenerami Docker na Linux, pobieranie obrazów z Docker Hub, tworzenie nowego kontenera oraz zapisywanie na nim obrazu.

Jeśli nie posiadasz na swoim systemie zainstalowanej platformy Docker, zapoznaj się z naszym poradnikiem na temat instalacji Docker na Ubuntu 22.04.

Pobieranie obrazów

Kontenery są tworzone z obrazów. Standardowo obrazy są pobierane z Docker Hub, rejestru oficjalnych obrazów udostępnionych przez firmę.

Każdy może hostować własne obrazy na Docker Hub. Pozwala to na wykorzystanie wcześniej spakowanych obrazów jako podstawy dla własnych aplikacji.

Wprowadź komendę:

$ docker run centos
docker-run-centos-(1).png

Docker wyszuka obrazy „centos” w lokalnym rejestrze. Jeśli nie zostanie znaleziony (gdyż nie został do tej pory pobrany), Docker pobierze go z Docker Hub i stworzy kontener na podstawie tego obrazu.

Wykorzystany obraz nie zawiera graficznego interfejsu, lecz możesz wyświetlić kontener za pomocą poniższej komendy:

$ docker ps

Wszystkie istniejące kontenery, zarówno uruchomione, jak i zatrzymane, można wyświetlić za pomocą komendy:

$ docker ps -a
1.png

Lista pobranych obrazów jest dostępna pod komendą:

$ docker images
2.png

Tworzenie kontenerów

Kontenery są podobne do maszyn wirtualnych i są zdecydowanie tańsze pod względem zasobów.

Spróbuj utworzyć kontener za pomocą pobranego obrazu „centos”:

$ docker run -it centos

„-it” pozwala na dostęp do shell wewnątrz kontenera. Wyświetlony zostanie shell kontenera, a nie systemu operacyjnego: wszystkie komendy będą więc wykonane na shell systemu wewnątrz kontenera (w tym przypadku Centos), a nie na shell hosta.

Możesz zamknąć shell kontenera i powrócić do shell hosta za pomocą komendy:

$ exit
3.png

Poniższe komendy służą odpowiednio do uruchomienia, zatrzymania i usunięcia kontenera. Zastąp ID_or_container_name nazwą danego kontenera.

$ docker start ID_or_container_name
$ docker stop ID_or_container_name
$ docker rm ID_or_container_name

Przed uruchomieniem lub usunięciem kontenera, upewnij się, że jego status to „stop”. Przed zatrzymaniem kontenera, upewnij się, że jego status to „run”.

Kontenery są wyizolowanymi środowiskami, więc z definicji są „zamknięte”. Aby wejść w interakcję z ich „zawartością”, mapuj port komunikacyjny:

$ docker run -p 8081:80 -d nginx
  • „docker run”: komenda uruchomienia kontenera.
  • „-p 8081:80”: ujawnia port 80 kontenera na porcie 8081 hosta.
    • Jeśli kontener hostuje WebServer, dostaniesz się do niego przez „localhost:8081” oraz „IP:8081”.
  • „-d”: działanie kontenera w tle.
  • „nginx”: obraz wykorzystany do utworzenia kontenera.
    • Jeśli obraz nie jest dostępny lokalnie, musi być pobrany z Docker Hub.

ginx

Tworzenie obrazów kontenerów

Po utworzeniu kontenera i przeprowadzeniu niezbędnych zmian, sugerujemy utworzenie jego obrazu: wszystko co znajduje się w kontenerze (zainstalowane dodatkowe moduły lub inne zmiany) pozostanie w nim, lecz nie będzie znajdowało się na obrazie wykorzystanym do jego stworzenia. Jeśli kontener zostanie usunięty, a następnie odtworzony, wszelkie wykonane zmiany zostaną utracone.

Przyjmijmy, że został utworzony kontener z obrazem CentOS oraz zainstalowanym Nginx. Jeśli kontener zostanie usunięty i odtworzony z obrazu ubuntu, Nginx nie będzie zainstalowany, gdyż wykorzystany obraz go nie zawiera.

W celu wygenerowania obrazu kontenera (i utworzenia backupu, który pozwoli na odtworzenie kontenera w takim samym stanie) wykonaj komendę:

$ docker commit -m "Lista wykonanych zmian" -a "nazwa użytkownika" container_id repository/new_image_name
  • „-m” jest wykorzystywane do zapisania listy zmian w postaci logów.
  • „-a” jest wykorzystywane do wskazania nazwy użytkownika, który generuje obraz.

Powyższa komenda zapisze obraz w lokalnym rejestrze (dostępnym przez obrazy Docker).

Obraz może również zostać zapisany na Docker Hub. Może to zostać wykonane poprzez autoryzację na Docker Hub z wykorzystaniem Dockera (z shell) poprzez komendę:

$ docker login -u username
  • Zostaniesz poproszony o wprowadzenia hasła do autoryzacji na Docker Hub
$ docker push username/image_name