Docker jest ostatnio bardzo popularne narzędzie. Sam z niego korzystam, gdy tylko mogę i nie wyobrażam sobie aktualnie pracy bez niego. Dlatego prezentuję 10 przydatnych i chyba najpopularniejszych komend!
Ten artykuł to bardziej moje kompedium, gdyż mimo że są to popularne komendy to moja pamięć bardzo lubi płatać mi figle tym samym zapominam ich. Może i Wam się przyda?
Pominę instalację, gdyż tutaj świetnie sobie z tym radzi oficjalna dokumentacja.
Docker – przydatne komendy
- docker ps
- docker pull
- docker build
- docker run
- docker logs
- docker volume ls
- docker rm
- docker rmi
- docker stop
docker ps
Jest to podstawowa moim zdaniem komenda. Czemu?
Docker pozwala utworzyć kontenery z aplikacjami, więc warto by było wiedzieć co dokładnie mamy uruchomione, jaki jest UID kontenera, jego przyjazna nazwa, czy chociażby jakie porty są wystawione z kontenera.
Oczywiście jak większość komenda, tak i ta posiada dodatkowe flagi. Np.:
- -a/–all – wyświetla wszystkie kontenery (standardowo wyświetla tylko włączone)
- -q/–quiet – ta flaga wyświetla nam tylko identyfikatory, które pozwalają np.: wykorzystać identyfikatory dalej, zamiast je wyciągać „ręcznie”, np. z wykorzystaniem AWK.
docker pull
Przydałoby się posiadać jakieś kontenery, by to miało jakikolwiek sens. Właśnie za pomocą pull możemy je pobrać z rejestru (registry), gdzie są trzymane obrazy kontenerów. Możemy posiadać własny rejestr, albo skorzystać z gotowych, takich jak Hub.
Są gotowe obrazy, np.: z CentOS, albo już z pre-instalowanym Nodejs z NPM. Jest wiele obrazów, nawet gotowych do uruchomienia aplikacji i w ten sposób możemy taki obraz pobrać z repozytorium obrazów.
docker build
Jednak skoro już korzystamy z kontenerów, to chcemy na nim uruchomić własne obrazy z aplikacjami. W tym celu tworzymy plik Dockerfile (o nim w innym artykule) i możemy za pomocą komendy build utworzyć własny obraz i go uruchomić.
docker run
Napisałem już o liście uruchomionych kontenerów, jak pobrać gotowe i jak utworzyć własne. Jednak warto je uruchomić.
Przykładowo wpisując run -it ubuntu bash uruchomimy na obrazie Ubuntu sesję basha. Dla bezpieczeństwa jest to mega przydatna opcja, bo możemy tworzyć izolowane środowisko w prosty sposób i z jego poziomu testować np.: pliki malware.
docker logs
Jednak nie wszystko musi iść po myśli, więc zawsze warto spojrzeć w logi aplikacji i sprawdzić co się dzieje. Do tego może się przydać właśnie komenda do sprawdzenia logów serwera. Wywołujemy to np.: logs –follow nazwa_super_kontenera
docker volume ls
Jak już wspomniałem, świetnie można wykorzystać dla naszej aplikacji, jednakże czasami potrzebujemy jakieś dane utrzymywać (sesja kontenera nie utrzymuje na stałe danych). Właśnie korzystając z volume możemy dane trzymać na stałe, co w pewnych przypadkach jest konieczne. volume ls – wyświetla nam listę taki wolumenów.
Nie jestem fanem „trwałego” utrzymywania danych przez kontenery, więc pozwolicie, że nie będę się rozwodzić nad większą ilością funkcji wolumenów.
docker stop, docker rm i docker rmi
Utworzyliśmy kontener pobrany z internetu lub utworzony samodzielnie. Uruchomiliśmy go. Co w momencie, gdy go nie potrzebujemy już? stop jak się domyślacie zatrzymuje kontener. Nie zmienia faktu, że dalej w systemie posiadamy pobrany obraz lub istniejący kontener. W tym przypadku rm służy usuwaniu kontenerów, zaś rmi – usuwaniu pobranych obrazów.
Jak zastosować komendy razem?
Mój ulubiony temat to wtedy, gdy czyszczę serwer lub komputer lokalny z istniejących obrazów i/lub kontenerów. Czas posprzątać i wtedy robię taki mały zestaw:
- docker kill $(docker ps -q) – zabijam (nie wyłączam) wszystkie istniejące kontenery.
- docker rm $(docker ps -a -q) – temat usuwam wszystkie istniejące kontenery
- docker rmi $(docker images -q) – i na sam koniec usuwam wszystkie pobrane obrazy ze swojego urządzenia.
Co jednak z bardziej skomplikowanymi operacjami?
Pomijając temat Swarm, Kubernetes i innych magicznych narzędzi, by ułatwić sobie pracę korzystam z compose, jednak jest to dużo bardziej rozbudowane narzędzie, więc nie opiszę je już niedługo wraz z poradnikiem na temat uruchamiania prostej aplikacji sklepu opartej o mikroserwisy, gdzie kontenery sprawują się najlepiej.