Wprowadzenie
Docker to platforma, która ułatwia uruchamianie i zarządzanie procesami aplikacji w kontenerach. Zapewnia sposób na odizolowanie aplikacji od infrastruktury. Kontenery są bardzo podobne do maszyn wirtualnych, ale są bardziej przenośne, wydajne i łatwe w użyciu. Istnieją różne sposoby instalacji Dockera na dystrybucjach Linux. Najpopularniejszym i najprostszym sposobem instalacji Dockera na istniejącym systemie operacyjnym jest użycie poleceń yum.
Ten samouczek pokaże, jak skonfigurować i używać Dockera na systemie CentOS 7 w kilku prostych krokach.
Wymagania wstępne:
- 64-bitowa instancja CentOS 7.
- Użytkownik niebędący rootem z uprawnieniami sudo.
Wszystkie polecenia wykonywane w tym samouczku są uruchamiane jako użytkownik niebędący rootem, a w razie potrzeby dostęp do konta root zostanie zapewniony za pomocą słowa kluczowego sudo.
Krok 1: Konfiguracja Dockera na instancji CentOS 7
Oficjalne repozytorium CentOS 7 może nie zawierać najnowszego pakietu instalacyjnego Dockera. W tej sekcji zainstalujesz najnowszą wersję Dockera z oficjalnego repozytorium Docker. Najpierw musisz zaktualizować bazę danych pakietów za pomocą:
|
1 |
sudo yum check-update |
Po zakończeniu kroku aktualizacji uruchom poniższe polecenie, aby pobrać i zainstalować najnowszą wersję Dockera:
|
1 |
curl -fsSL https://get.docker.com/ | sh |
Docker został zainstalowany, więc możesz uruchomić demona Docker, uruchamiając poniższe polecenie:
|
1 |
sudo systemctl start docker |
Aby sprawdzić, czy demon Docker działa, wpisz następujące polecenie:
|
1 |
sudo systemctl status docker |
Wynik polecenia systemctl status powinien być podobny do poniższego, co oznacza, że usługa działa:
|
1 2 3 4 5 6 |
Wynik: ● docker.service - Docker Application Container Engine Załadowano: załadowano (/usr/lib/systemd/system/docker.service; wyłączony; domyślne ustawienie: wyłączone) Aktywny: aktywny (uruchomiony) od Śr 2021-02-17 18:22:06 UTC; 10s temu Dokumentacja: https://docs.docker.com Główny PID: 21884 (dockerd) |
Na koniec, aby upewnić się, że Docker uruchamia się po ponownym uruchomieniu maszyny, użyj polecenia:
|
1 |
sudo systemctl enable docker |
Instalacja Dockera zapewnia zarówno usługę Docker, jak i narzędzie klienckie (klienta wiersza poleceń Docker). W kolejnych sekcjach samouczka będziesz mógł lepiej zapoznać się z poleceniami Dockera w praktyce.
Możesz również zapoznać się z naszym szczegółowym samouczkiem na temat tego, jak zainstalować & obsługiwać Dockera na Ubuntu w chmurze publicznej.
Krok 2: Używanie poleceń Dockera bez przedrostka Sudo
Polecenia Dockera wymagają uprawnień roota do uruchomienia. Dlatego, jeśli chcesz uruchomić te polecenia, musisz poprzedzić je przedrostkiem sudo. Podczas instalacji domyślnie tworzona jest grupa Docker. Jeśli dodasz użytkownika do tej grupy, będziesz mógł uruchamiać polecenia Dockera bez sudo. Próba uruchomienia poleceń Dockera bez sudo lub przed dodaniem użytkownika do grupy spowoduje wyświetlenie wyniku podobnego do poniższego:
|
1 2 3 |
Wynik: docker: Nie można połączyć się z demonem Docker demonem. Czy the docker demon działa na tym hoście?. Zobacz 'docker run --help'. |
Dodanie swojej nazwy użytkownika do grupy Docker sprawi, że nie będziesz musiał używać sudo do uruchamiania poleceń Dockera:
|
1 |
sudo usermod -aG docker $(whoami) |
Aby dodać innego użytkownika do grupy Docker, możesz po prostu zastąpić nazwę użytkownika w poleceniu:
|
1 |
sudo usermod -aG docker username |
W dalszej części tego przewodnika zakładamy, że wszystkie polecenia są wykonywane przez użytkownika należącego do grupy użytkowników Docker. Jeśli tak nie jest, możesz użyć przedrostka sudo przed poleceniami.
Krok 3: Wykonywanie poleceń platformy Docker
Teraz, gdy masz zainstalowanego i uruchomionego Dockera, przyjrzyjmy się kilku poleceniom, aby zapoznać się z narzędziem wiersza poleceń Docker. Polecenia Dockera zazwyczaj mają następującą postać:
|
1 |
docker [opcja] [polecenie] [argumenty] |
Aby znaleźć wszystkie dostępne podpolecenia, należy użyć:
|
1 |
docker |
Od wersji Docker 20.10.3, pełna lista dostępnych podpoleceń obejmuje:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
Wynik: attach Dołącz lokalne standardowe wejście, wyjście, i błędów strumienie do a uruchomionego kontenera build Zbuduj an obraz z a Dockerfile commit Utwórz a nowy obraz na podstawie zmian w kontenerze's changes cp Kopiuj pliki/foldery między kontenerem a lokalnym systemem plików create Utwórz nowy kontener diff Sprawdź zmiany w plikach lub katalogach w systemie plików kontenera events Pobieraj zdarzenia w czasie rzeczywistym z the serwera exec Uruchom a polecenie w a działającym kontenerze export Eksportuj a system 'plików kontenera jako a archiwum tar history Pokaż the historię obrazuan image images Wyświetl listę obrazów import Importuj the zawartość z a archiwum tar w celu utworzenia a obrazu systemu plików info Wyświetl informacje -o całym systemie inspect Zwróć niskopoziomowe -informacje o obiektach DockerDocker objects kill Zabij jeden lub więcej uruchomionych kontenerów load Załaduj an obraz z a archiwum tar lub STDIN login Zaloguj się do a rejestru Docker logout Wyloguj się z a rejestru Docker logs Pobierz the logi kontenera a container pause Wstrzymaj wszystkie procesy w jednym lub większej liczbiekontenery port Wyświetl listę portów mapowań lub a specyficznego mapowania dla the kontenera ps Wyświetl listę kontenerów pull Pobierz an obraz lub a repozytorium z a rejestru push Prześlij an obraz lub a repozytorium do a rejestru rename Zmień nazwę a kontenera restart Uruchom ponownie jeden lub więcej kontenerów rm Usuń jeden lub więcej kontenerów rmi Usuń jeden lub więcej obrazów run Uruchom a polecenie w a nowym kontenerze save Zapisz jeden lub więcej obrazów do a tar archiwum (przesyłanego strumieniowo do STDOUT by domyślnie) search Wyszukaj the Docker Hub w poszukiwaniu obrazów start Uruchom jeden lub więcej zatrzymanych kontenerów stats Wyświetl a na żywo strumień statystyk zużycia (zasobów ) kontenerów usage statistics stop Zatrzymaj jeden lub więcej uruchomionych kontenerów tag Utwórz a tag TARGET_IMAGE wskazujący na to SOURCE_IMAGE top Wyświetl the uruchomione procesy w a kontenerze unpause Wznów all procesy wewnątrz jednego lub więcej kontenerów update Zaktualizuj konfigurację of jednego lub więcej kontenerów version Pokaż the informacje o wersji Docker information wait Zablokuj aż jeden lub więcej kontenerów zatrzyma się, , a następnie wyświetl ich kody wyjścia |
Możesz użyć flagi –help z konkretnym poleceniem, aby uzyskać o nim więcej informacji:
|
1 |
docker subcommand --help |
Aby uzyskać szczegółowe informacje o systemie, użyj:
|
1 |
docker info |
Krok 4: Praca z obrazami Docker
Obrazy Docker można nazwać schematem dla kontenerów Docker. Obrazy te są zazwyczaj pobierane z Docker Hub, który jest rejestrem zarządzanym przez projekt Docker. Każdy może tworzyć i przesyłać swoje obrazy do Docker Hub. W rezultacie w rejestrze można łatwo znaleźć szeroką gamę aplikacji i dystrybucji systemów operacyjnych. Wypróbujmy prosty program, który potwierdzi dostęp do Docker Hub:
|
1 |
docker run hello-world |
Powinieneś otrzymać dane wyjściowe jak poniżej, co pokazuje, że Docker działa:
|
1 2 3 4 |
Wynik: Witaj z Docker! Ta wiadomość pokazuje, że Twoja instalacja wydaje się to działać working poprawnie. ... |
Możesz znaleźć różne obrazy Docker w Docker Hub, używając polecenia wyszukiwania. Na przykład zobacz poniższe polecenie, aby wyszukać obraz CentOS:
|
1 |
docker search centos |
Zapytanie wyszukiwania wyświetli listę wszystkich obrazów, które pasują do podanego ciągu znaków. W Twoim przypadku wynik powinien wyglądać następująco:
|
1 2 3 4 5 6 7 8 |
Wynik: NAZWA OPIS GWIAZDKI OFICJALNY AUTOMATYCZNY centos Oficjalna kompilacja systemu CentOSCentOS. 6410 [OK] ansible/centos7-ansible Ansible na Centos7 132 [OK] consol/centos-xfce-vnc Centos kontener z "headless" VNC sesją… 125 [OK] jdeathe/centos-ssh OpenSSH / Supervisor / EPEL/IUS/SCL Repozytoria… 117 [OK] centos/systemd systemd włączony bazowy kontener. 96 [OK] ... |
In the search results, there are different columns describing information about the image. The OK in the OFFICIAL column determines that the image was created and supported by the company behind the application. Once you have finalized the image, you can download it to your local machine using the Docker pull command:
|
1 |
docker pull centos |
Po pobraniu obrazu możesz uruchomić kontener za pomocą polecenia Docker run. Jeśli spróbujesz bezpośrednio uruchomić obraz bez wcześniejszego pobrania, Docker najpierw pobierze obraz, a następnie uruchomi kontener:
|
1 |
docker run centos |
Możesz wyświetlić listę obrazów pobranych na lokalny komputer za pomocą poniższego polecenia:
|
1 |
docker images |
Powinieneś otrzymać podobny wynik:
|
1 2 3 4 |
Wynik: REPOSITORY TAG IMAGE ID UTWORZONO ROZMIAR centos latest 300e315adb2f 2 miesięcy temu 209MB hello-world latest bf756fb1ae65 13 miesięcy temu 13.3kB |
W dalszej części tego samouczka dowiesz się, jak modyfikować obrazy w celu uruchamiania kontenerów. Te nowe obrazy mogą być dodawane lub przesyłane (push) do Docker Hub oraz innych rejestrów przechowujących obrazy Docker.
Krok 5: Interaktywne uruchamianie kontenera
Istnieją różne typy kontenerów. Kontener hello-world uruchomiony w Kroku 4 to typ kontenera, który uruchamia się i kończy działanie po wyświetleniu komunikatu. Innym typem kontenera jest kontener interaktywny. Możesz używać kontenerów interaktywnych w podobny sposób jak maszyn wirtualnych.
Stwórzmy kontener z najnowszego obrazu CentOS. Użycie flag -i oraz -t w poleceniu Docker run zapewni interaktywny dostęp do kontenera CentOS:
|
1 |
docker run -it centos |
Wiersz poleceń ulegnie zmianie i powinien wyglądać jak poniższy wynik:
|
1 2 |
Wynik: [root@3ce69d2a35b9 /]# |
|
1 |
Uwaga: Ten identyfikator kontenera wyświetlany w the wierszu poleceń jest unikalny i it przyda się później , w, in tym przykładzie to jest 3ce69d2a35b9. |
Teraz każde wykonane polecenie zostanie uruchomione wewnątrz kontenera. Jest to podobne do uruchamiania poleceń w maszynie wirtualnej. Spróbujmy zainstalować MySQL serwer w kontenerze CentOS. Możesz to zrobić za pomocą:
|
1 |
yum install mysql |
Krok 6: Zapisywanie zmian w kontenerze do obrazu Docker
Po uruchomieniu kontenera możesz wykonywać wszystkie operacje, które są możliwe w podobnej maszynie wirtualnej, takie jak tworzenie/modyfikowanie plików lub konfigurowanie aplikacji. Pamiętaj, że te zmiany pozostaną tylko w tym kontenerze, a po usunięciu kontenera wprowadzone zmiany zostaną utracone.
W tej części samouczka dowiesz się, jak utworzyć nowy obraz platformy Docker z kontenera z wprowadzonymi zmianami. Po Krok 5 masz uruchomiony kontener CentOS z zainstalowanym serwerem MySQL. Ten kontener różni się teraz od czystego obrazu CentOS. Możesz zapisać ten stan kontenera do dalszego użytku. Najpierw musisz wyjść z kontenera za pomocą:
|
1 |
exit |
Zatwierdź zmiany wprowadzone w kontenerze do nowego obrazu Docker za pomocą poniższego polecenia:
|
1 |
docker commit -m "Zmiany wprowadzone w obrazie" -a "Nazwa Autora" container-id repository/new_image_name |
W poleceniu -m odnosi się do komunikatu zatwierdzenia (commit message) i powinno zasadniczo opisywać wprowadzone zmiany, tag -a służy do wskazania autora. Container-id to identyfikator z Krok 5, który otrzymałeś po uruchomieniu kontenera w trybie interaktywnym, a zazwyczaj repozytorium to Twoja nazwa użytkownika w Docker Hub. Na przykład:
|
1 |
docker commit -m "dodano mysql-server" -a "CloudSigma" 59839a1b7de2 finid/centos-mariadb |
|
1 |
Note: Po the nowy obraz jest zatwierdzony on jest zapisany na Twoim systemie. W the następnych etapach of tym samouczku, ty będziesz uczyć się jak to przesłać an obraz do Docker Hub i w the podobnych rejestrach które hostują docker obrazy. Gdy Twój obraz jest przesłany do the rejestru, on może być dostępny przez innych także well. |
Teraz, gdy obraz został zatwierdzony, polecenie docker images powinno wyświetlić zarówno nowy obraz, jak i stare:
|
1 |
docker images |
Wynik polecenia powinien być podobny do poniższego:
|
1 2 3 4 5 |
Output: REPOSITORY TAG IMAGE ID CREATED SIZE cloudsigma23/centos-mysql latest 1b9368efea70 13 sekund temu 308MB centos latest 300e315adb2f 2 miesięcy temu 209MB hello-world latest bf756fb1ae65 13 miesięcy temu 13.3kB |
Jak widać w przykładzie, nowy obraz centos-mysql został utworzony przy użyciu obrazu CentOS z Docker Hub. Różnica w rozmiarze wskazuje, że wprowadzono pewne zmiany. W tym przykładzie było to dodanie serwera MySQL w kontenerze. Następnym razem, gdy będziesz potrzebować kontenera z serwerem MySQL, możesz po prostu uruchomić nowy obraz i voila! Masz uruchomiony kontener CentOS z preinstalowanym serwerem MySQL.
Krok 7: Zarządzanie kontenerami Docker
Nowe, gdy znasz już Dockera, po pewnym czasie korzystania z niego masz już kilka uruchomionych i kilka nieaktywnych kontenerów. Aby uzyskać listę aktywnych kontenerów, należy użyć:
|
1 |
docker ps |
Powinieneś zobaczyć podobny wynik:
|
1 2 3 |
Wynik: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 604c889cf404 centos "/bin/bash" 20 minut temu Up 20 minut intelligent_easley |
Aby wyświetlić zarówno aktywne, jak i nieaktywne kontenery, należy użyć flagi -a z poleceniem:
|
1 |
docker ps -a |
Aby znaleźć ostatnio utworzony kontener, możesz użyć flagi -l:
|
1 |
docker ps -l |
Aby zatrzymać uruchomiony/aktywny kontener, uruchom proste polecenie:
|
1 |
docker stop container-id |
Identyfikator kontenera (container-id) znajdziesz w wyniku polecenia Docker ps.
Krok 8: Publikowanie obrazów w repozytorium
Kolejnym krokiem po utworzeniu nowego obrazu jest udostępnienie go znajomym. Możesz go również udostępnić całemu światu za pomocą Docker Hub lub dowolnego innego rejestru. Przed przesłaniem obrazu wymagane jest zalogowanie się do odpowiedniego rejestru.
W kolejnej części samouczka dowiesz się, jak przesłać obrazy do Docker Hub. Najpierw zarejestruj się w Docker Hub. Aby przesłać swój obraz, musisz zalogować się do Docker Hub za pomocą poniższego polecenia:
|
1 |
docker login -u docker-registry-username |
Po podaniu prawidłowego hasła i pomyślnym uwierzytelnieniu możesz przesłać swój obraz. Aby przesłać obraz, użyj poniższego polecenia:
|
1 |
docker push docker-registry-username/docker-image-name |
Wynik polecenia będzie podobny do tego:
|
1 2 3 4 5 |
Wynik: The push refers to repository [docker.io/cloudsigma23/centos-mysql] ee30e80cbcc5: Pushed 2653d992f4ef: Mounted from library/centos ... |
Po przesłaniu obrazu powinien on pojawić się w panelu Twojego konta, jak pokazano na poniższym obrazku:

W przypadku niepowodzenia w podobny sposób, istnieje prawdopodobieństwo, że nie jesteś zalogowany:
|
1 2 3 4 5 6 7 |
Wynik: The push refers to repository [docker.io/cloudsigma23/centos-mysql] ee30e80cbcc5: Layer already exists 2653d992f4ef: Layer already exists errors: denied: requested access to the resource is denied unauthorized: authentication required |
Możesz się zalogować i powtórzyć próbę przesłania.
Podsumowanie
Istnieje wiele sposobów na wykorzystanie Dockera. Ten samouczek powinien dostarczyć Ci wystarczających informacji na start. A ponieważ Docker jest bardzo popularnym projektem, wiele szczegółów na temat jego użycia, a także różnych przypadków użycia, można znaleźć na stronie bloga projektu.
Możesz również zapoznać się z naszymi innymi samouczkami dotyczącymi Dockera, aby dowiedzieć się więcej o tym, co możesz z nim zrobić:
- Czyszczenie zasobów Dockera – obrazy, kontenery i wolumeny
- Wdrażanie Laravel, Nginx i MySQL za pomocą Docker Compose
- Uruchom własny serwer VPN w Dockerze z OpenVPN Access Server
Udanego korzystania!
Komentarze
Brak komentarzy. Bądź pierwszy.