Jak automatycznie budować i skonfigurować niestandardowe obrazy Docker z DockerFile - Część 3

Jak automatycznie budować i skonfigurować niestandardowe obrazy Docker z DockerFile - Część 3

Ten samouczek skoncentruje się na tym, jak zbudować niestandardowy obraz dokera na podstawie Ubuntu z Apache Zainstalowana usługa. Cały proces zostanie zautomatyzowany za pomocą Dockerfile.

Obrazy dokera można automatycznie zbudować z plików tekstowych, nazwanych Dockerfiles. Plik Docker zawiera instrukcje lub polecenia uporządkowane krok po kroku używane do tworzenia i konfigurowania obrazu Docker.

Wymagania

  • Zainstaluj Docker i naucz się manipulacji kontenerem Docker - Część 1
  • Wdrażaj i uruchom aplikacje w ramach kontenerów Docker - Część 2

Zasadniczo plik Docker zawiera różne instrukcje w celu zbudowania i skonfigurowania określonego kontenera na podstawie twoich wymagań. Poniższe instrukcje są najczęściej używane, niektóre z nich są obowiązkowe:

  1. Z = Obowiązkowa jako pierwsza instrukcja w pliku Docker. Instruuje Dockera, aby wyciągnął obraz podstawowy, z którego budujesz nowy obraz. Użyj znacznika, aby określić dokładny obraz, z którego budujesz:
Np.: Z Ubuntu: 20.04 
  1. Opiekun = Autor obrazu kompilacji
  2. URUCHOMIĆ = Ta instrukcja może być używana w wielu wierszach i uruchamia dowolne polecenia po utworzeniu obrazu Dockera.
  3. CMD = Uruchom dowolne polecenie po uruchomieniu obrazu Dockera. Użyj tylko jednej instrukcji CMD w pliku dokera.
  4. PUNKT WEJŚCIA = Tak samo jak CMD, ale używane jako główne polecenie obrazu.
  5. UJAWNIĆ = Instruuje kontener, aby słuchał w portach sieciowych podczas uruchamiania. Porty kontenerowe nie są domyślnie osiągalne z hosta.
  6. Env = Ustaw zmienne środowiska kontenera.
  7. DODAĆ = Kopiuj zasoby (pliki, katalogi lub pliki z adresów URL).

Krok 1: Tworzenie lub pisanie repozytorium DockerFile

1. Najpierw stwórzmy jakiś rodzaj Dockerfile Repozytoria w celu ponownego wykorzystania plików w przyszłości, aby tworzyć inne obrazy. Zrób pusty katalog gdzieś w /var partycja, w której utworzymy plik z instrukcjami, które zostaną użyte do zbudowania nowo Docker Image.

# mkdir -p/var/docker/ubuntu/apache # touch/var/docker/ubuntu/apache/dockerFile 
Utwórz repozytorium DockerFile

2. Następnie rozpocznij edycję pliku z następującymi instrukcjami:

# vi/var/docker/ubuntu/apache/dockerFile 

Fragment Dokerfile:

Od Ubuntu Ceentinger your_name <[email protected]> Uruchom apt -get -y instaluj Apache2 Uruchom Echo „Hello Apache Server na Ubuntu Docker”>/var/www/html/index.HTML Expose 80 cmd/usr/sbin/apache2ctl -d na pierwszym planie 
Repozytorium DockerFile

Teraz przejdźmy do instrukcji pliku:

Pierwsza linia mówi nam, że budujemy z Ubuntu obraz. Jeśli nie zostanie przesłany, powiedzmy 14:10 Na przykład najnowszy obraz z Docker Hub Jest używane.

W drugim wierszu dodaliśmy nazwa I e-mail twórcy obrazu. Następne dwa URUCHOMIĆ Linie będą wykonywane w pojemniku podczas budowania obrazu i będą instalować Apache Demon i Echo jakiś tekst na stronie internetowej domyślnej Apache.

UJAWNIĆ Linia będzie instruować Docker kontener do słuchania na porcie 80, ale port nie będzie dostępny na zewnątrz. Ostatnia linia instruuje pojemnik do uruchomienia usługi Apache na pierwszym planie po uruchomieniu kontenera.

3. Ostatnią rzeczą, którą musimy zrobić, jest rozpoczęcie tworzenia obrazu poprzez wydanie poniższego polecenia, które lokalnie utworzy nowy obraz Docker o nazwie Ubuntu-Apache Na podstawie Dockerfile utworzonego wcześniej, jak pokazano w tym przykładzie:

# Docker Build -t Ubuntu -Apache/var/docker/ubuntu/apache/ 
Utwórz obraz Docker

4. Po utworzeniu obrazu przez Doker, Możesz wymienić wszystkie dostępne obrazy i zidentyfikować swój obraz, wydając następujące polecenie:

# Obrazy dokera 
Wymień wszystkie obrazy Docker

Krok 2: Uruchom kontener i uzyskaj dostęp do Apache z LAN

5. Aby uruchomić kontener w sposób ciągły (w tle) i uzyskać dostęp do usług eksponowanych kontenerów (portów) z hosta lub innej zdalnej maszyny w sieci LAN, uruchom poniższe polecenie w wierszu terminala hosta:

# Docker Run -d -p 81:80 Ubuntu -Apache 
Uruchom obraz kontenera Docker

Tutaj -D Opcja uruchamia Ubuntu-Apache pojemnik na tle (jako demon) i -P Opcja mapuje port kontenerowy 80 do twojego portu LocalHost 81. Zewnętrzne dostęp do usługi Apache można dotrzeć przez port Port 81 tylko.

Polecenie NetStat da ci wyobrażenie o tym, jakie porty słucha host.

Po rozpoczęciu kontenera możesz również uruchomić Docker Ps polecenie, aby wyświetlić status działającego kontenera.

6. Strona internetowa może być wyświetlana na hoście z wiersza poleceń za pomocą kędzior Narzędzie w stosunku do adresu IP komputerowego, Localhost lub Docker Net Interface na porcie 81. Użyj wiersza poleceń IP, aby wyświetlać adresy IP interfejsu sieciowego.

# IP Addr [List Nowork Interfaces] # Curl IP-Address: 81 [System Docker IP Adres] # Curl LocalHost: 81 [LocalHost] 
Sprawdź interfejs sieciowy Docker i adres IP Sprawdź stronę Docker Apache

7. Aby odwiedzić stronę internetową kontenera z sieci, otwórz przeglądarkę w zdalnej lokalizacji i użyj protokołu HTTP, adresu IP urządzenia, w którym działa kontener, a następnie port 81, jak pokazano na poniższym obrazku.

http: // ip-address: 81 
Sprawdź stronę Apache Container Container

8. Aby uzyskać wnętrze, które procesy działają w wydaniu kontenerowym, następujące polecenie:

# Docker PS # Docker Top  
Sprawdź uruchamianie procesów Docker

9. Aby zatrzymać problem kontenera Docker Stop polecenie, a następnie identyfikator lub nazwa kontenera.

# Docker Stop # Docker PS 

10. W przypadku, gdy chcesz przypisać opisową nazwę dla kontenera, użyj --nazwa Opcja, jak pokazano w poniższym przykładzie:

# Docker Run --Name my -Www -d -p 81:80 Ubuntu -Apache # Docker PS 
Podaj nazwę kontenera Docker

Teraz możesz odwołać się do kontenera do manipulacji (start, stop, top, statystyki itp.) Tylko za pomocą przypisanej nazwy.

# Docker Stats My-Www 
Monitoruj wykorzystanie kontenera Docker

Krok 3: Utwórz cały system konfiguracyjny dla kontenera Docker

11. NA Centos/Rhel możesz utworzyć Systemd Plik konfiguracyjny i zarządzaj kontenerem, jak zwykle dla dowolnej innej usługi lokalnej.

Na przykład utwórz nowy plik SystemD, powiedzmy, Apache-Docker.praca Korzystanie z następującego polecenia:

# VI/etc/Systemd/System/Apache-Docker.praca 

Apache-Docker.praca fragment pliku:

[Jednostka] Opis = kontener apache wymaga = dokera.usługa po = Docker.Service [Service] Restart = zawsze execStart =/usr/bin/Docker start -a my -WWW execstop =/usr/bin/Docker Stop -t 2 My -Www [instaluj] Wantedby = Local.cel 

12. Po zakończeniu edycji pliku zamknij go, ponownie załaduj demona SystemD, aby odzwierciedlić zmiany i uruchom kontener, wydając następujące polecenia:

# Systemctl Demon-Reload # Systemctl Start Apache-Docker.Service # Systemctl Status Apache-Docker.praca 

To był tylko prosty przykład tego, co możesz zrobić z prostym Dockerfile Ale możesz zbudować kilka dość wyrafinowanych aplikacji, które możesz wystrzelić w ciągu kilku sekund przy minimalnych zasobach i wysiłku.

Dalsze czytanie:

Część 4: Jak monitorować kontenery Docker w Linux