Wéi automatesch Custom Docker Biller mat Dockerfile bauen a konfiguréieren - Deel 3


Dësen Tutorial konzentréiert sech op wéi een e personaliséierten Docker-Bild opbaut baséiert op Ubuntu mat Apache Service installéiert. De ganze Prozess gëtt automatiséiert mat engem Dockerfile.

Docker Biller kënnen automatesch aus Textdateien gebaut ginn, genannt Dockerfiles. Eng Docker-Datei enthält step-by-step bestallt Instruktiounen oder Befehle benotzt fir en Docker-Bild ze kreéieren an ze konfiguréieren.

  • Installéiert Docker a Léiert Docker Container Manipulatioun - Deel 1
  • Deployéieren a lafen Uwendungen ënner Docker Container - Deel 2

Prinzipiell enthält eng Docker Datei verschidde Instruktioune fir e spezifesche Container ze bauen an ze konfiguréieren op Basis vun Ären Ufuerderungen. Déi folgend Instruktioune sinn am meeschte benotzt, e puer vun hinnen sinn obligatoresch:

  1. FROM = Obligatoresch als éischt Instruktioun an enger Docker Datei. Instruéiert Docker fir d'Basisbild ze zéien, aus deem Dir dat neit Bild baut. Benotzt en Tag fir dat exakt Bild ze spezifizéieren aus deem Dir baut:

Ex: FROM ubuntu:20.04

  1. MAINTAINER = Auteur vum Baubild
  2. RUN = Dës Instruktioun kann op e puer Zeilen benotzt ginn a leeft all Kommandoen nodeems en Docker Bild erstallt gouf.
  3. CMD = Fëllt all Kommando aus wann d'Docker-Bild gestart ass. Benotzt nëmmen eng CMD Instruktioun an engem Dockerfile.
  4. ENTRYPOINT = Selwecht wéi CMD awer als Haaptbefehl fir d'Bild benotzt.
  5. EXPOSE = Instruéiert de Container fir op Netzwierkporten ze lauschteren wann se lafen. D'Container Ports sinn net erreechbar vum Host als Standard.
  6. ENV = Behälter-Ëmfeldvariablen setzen.
  7. ADD = Ressourcen kopéieren (Dateien, Verzeichnisser oder Dateien vun URLen).

Schrëtt 1: Dockerfile Repository erstellen oder schreiwen

1. Als éischt, loosst eis eng Zort Dockerfile Repositories erstellen fir Dateien an der Zukunft ze benotzen fir aner Biller ze kreéieren. Maacht en eidele Verzeechnes iergendwou an der /var Partition wou mir d'Datei erstellen mat den Instruktiounen déi benotzt gi fir dat neit Docker Bild ze bauen.

# mkdir -p /var/docker/ubuntu/apache
# touch /var/docker/ubuntu/apache/Dockerfile

2. Als nächst fänkt d'Editioun vun der Datei mat den folgenden Instruktiounen un:

# vi /var/docker/ubuntu/apache/Dockerfile

Dokerfile Extrait:

FROM ubuntu
MAINTAINER  your_name  <[email >
RUN apt-get -y install apache2
RUN echo “Hello Apache server on Ubuntu Docker” > /var/www/html/index.html
EXPOSE 80
CMD /usr/sbin/apache2ctl -D FOREGROUND

Elo, loosst eis duerch d'Dateiinstruktioune goen:

Déi éischt Zeil seet eis datt mir aus engem Ubuntu-Bild bauen. Wa kee Tag ofgeliwwert gëtt, sot zum Beispill 14:10, gëtt dat lescht Bild vum Docker Hub benotzt.

Op der zweeter Linn hu mir den Numm an d'E-Mail vum Bildcreator bäigefüügt. Nächst zwou RUN Linnen ginn am Container ausgefouert wann Dir d'Bild baut a wäert den Apache Daemon installéieren an e puer Text an d'Standard Apache Websäit echo.

D'EXPOSE Linn wäert den Docker Container instruéieren fir um Hafen 80 ze lauschteren, awer den Hafen wäert net dobausse verfügbar sinn. Déi lescht Zeil instruéiert de Container fir den Apache Service am Virdergrond ze lafen nodeems de Container gestart ass.

3. Déi lescht Saach, déi mir maache mussen, ass d'Bild ze kreéieren andeems Dir de Kommando hei ënnen erausstellt, wat lokal en neit Docker-Bild mam Numm ubuntu-apache erstellt baséiert op der Dockerfile, déi virdru erstallt gouf, wéi am dëst Beispill:

# docker build -t ubuntu-apache /var/docker/ubuntu/apache/

4. Nodeems d'Bild vum Docker erstallt gouf, kënnt Dir all verfügbare Biller oplëschten an Äert Bild identifizéieren andeems Dir de folgende Kommando ausgitt:

# docker images

Schrëtt 2: Run de Container an Zougang Apache vum LAN

5. Fir de Container kontinuéierlech (am Hannergrond) ze lafen an Zougang zu de Container ausgesat Servicer (Ports) vum Host oder enger anerer Fernmaschinn an Ärem LAN ze kréien, fuert de Kommando ënnen op Ärem Host Terminal Prompt:

# docker run -d -p 81:80 ubuntu-apache

Hei leeft d'Optioun -d den ubuntu-apache Container am Hannergrond (als Daemon) an d'Optioun -p kartéiert de Containerport 80 op Är localhost port 81. Ausserhalb LAN Zougang zu Apache Service kann nëmmen duerch port erreecht ginn 81.

Netstat Kommando gëtt Iech eng Iddi iwwer wéi eng Ports de Host lauschtert.

Nodeems de Container gestart ass, kënnt Dir och den docker ps Kommando ausféieren fir de Status vum lafende Container ze gesinn.

6. D'Websäit kann op Ärem Host vun der Kommandozeil ugewisen ginn andeems Dir Curl Utility géint Är Maschinn IP Adress, localhost oder Docker Net-Interface um Port 81 benotzt.

# ip addr               [List nework interfaces]
# curl ip-address:81    [System Docker IP Address]
# curl localhost:81     [Localhost]

7. Fir d'Container Websäit vun Ärem Netz ze besichen, öffnen e Browser op enger Remote Location a benotzt HTTP Protokoll, d'IP Adress vun der Maschinn wou de Container leeft, gefollegt vum Port 81 wéi illustréiert am Bild hei drënner.

http://ip-address:81

8. Fir e Bannen ze kréien wat Prozesser am Container lafen, gitt de folgende Kommando:

# docker ps
# docker top <name or ID of the container>

9. Fir de Containerproblem ze stoppen Docker Stop Kommando gefollegt vun der Container ID oder Numm.

# docker stop <name or ID of the container>
# docker ps

10. Am Fall wou Dir en deskriptiven Numm fir de Container wëllt zouginn, benotzt d'Optioun --name wéi am Beispill hei ënnendrënner:

# docker run --name my-www -d -p 81:80 ubuntu-apache
# docker ps

Elo kënnt Dir de Container fir Manipulatioun referenzéieren (Start, Stop, Top, Statistiken, etc) nëmmen andeems Dir den zougewisenen Numm benotzt.

# docker stats my-www

Schrëtt 3: Erstellt eng Systembreet Konfiguratiounsdatei fir Docker Container

11. Op CentOS/RHEL kënnt Dir eng systemd Konfiguratiounsdatei erstellen an de Container verwalten wéi Dir normalerweis fir all aner lokal Service maacht.

Zum Beispill, erstellt eng nei systemd Datei mam Numm, loosst eis soen, apache-docker.service mam folgenden Kommando:

# vi /etc/systemd/system/apache-docker.service

apache-docker.service Datei Auszich:

[Unit]
Description=apache container
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a my-www
ExecStop=/usr/bin/docker stop -t 2 my-www

[Install]
WantedBy=local.target

12. Nodeems Dir d'Ännere vun der Datei fäerdeg gemaach hutt, maach se zou, lued de systemd Daemon nei fir d'Ännerungen ze reflektéieren an de Container unzefänken andeems Dir déi folgend Kommandoen ausginn:

# systemctl daemon-reload
# systemctl start apache-docker.service
# systemctl status apache-docker.service

Dëst war just en einfacht Beispill vu wat Dir maache kënnt mat engem einfachen Dockerfile awer Dir kënnt e puer zimmlech raffinéiert Uwendungen virbauen, déi Dir a just e puer Sekonnen mat minimale Ressourcen an Ustrengung brenne kënnt.

Weider liesen: