Kohandatud Dockeri piltide automaatne koostamine ja konfigureerimine Dockerfile'i abil - 3. osa


Selles õpetuses keskendutakse sellele, kuidas luua kohandatud Dockeri pilt Ubuntu baasil, kui installitud on Apache'i teenus. Kogu protsess automatiseeritakse Dockerfile'i abil.

Dockeri pilte saab automaatselt ehitada tekstifailidest, mille nimi on Dockerfiles. Dockeri fail sisaldab samm-sammult järjestatud juhiseid või käske, mida kasutatakse Dockeri pildi loomiseks ja konfigureerimiseks.

  • Installige Docker ja õppige Dockeri konteineritega manipuleerimist - 1. osa
  • Rakenduste juurutamine ja käitamine Dockeri konteinerite all - 2. osa

Põhimõtteliselt sisaldab Dockeri fail mitmesuguseid juhiseid konkreetse konteineri koostamiseks ja konfigureerimiseks vastavalt teie vajadustele. Kõige sagedamini kasutatakse järgmisi juhiseid, millest mõned on kohustuslikud:

  1. FROM u003d Kohustuslik Dockeri faili esimese juhisena. Käsib Dockeril tõmmata aluskujutis, millest uue pildi ehitate. Kasutage silti, et määrata täpne pilt, millest ehitate:

Ex: FROM ubuntu:20.04

  1. MAINTAINER u003d Järjepildi autor
  2. RUN u003d Seda käsku saab kasutada mitmel real ja see käivitab kõik käsud pärast Dockeri pildi loomist.
  3. CMD u003d Dockeri pildi käivitamisel käivitage mis tahes käsk. Kasutage Dockerfile'is ainult ühte CMD-käsku.
  4. ENTRYPOINT u003d Sama mis CMD, kuid seda kasutatakse pildi peamise käsuna.
  5. EXPOSE u003d käsib konteineril töötamise ajal võrgupordides kuulata. Konteineripordid pole hostilt vaikimisi kättesaadavad.
  6. ENV u003d Määra konteinerikeskkonna muutujad.
  7. ADD u003d Kopeeri ressursse (faile, katalooge või faile URL-idest).

1. samm: Dockerfile'i hoidla loomine või kirjutamine

1. Kõigepealt looge mingisugused Dockerfile'i hoidlad, et faile tulevikus teiste piltide loomiseks uuesti kasutada. Tehke tühi kataloog kuhugi jaotisse /var , kus loome faili juhistega, mida kasutatakse uue Dockeri pildi ehitamiseks.

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

2. Järgmisena alustage faili redigeerimist järgmiste juhistega:

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

Dokerfile'i väljavõte:

FROM ubuntu
MAINTAINER  your_name  <[email protected]>
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

Vaatame nüüd faili juhiseid:

Esimene rida ütleb meile, et me ehitame Ubuntu pildilt. Kui ühtegi silti ei esitata, öelge näiteks 14:10, kasutatakse Docker Hubi uusimat pilti.

Teisel real oleme lisanud pildilooja nime ja e-posti aadressi. Järgmised kaks RUN-i rida käivitatakse pildi loomisel konteineris ja installivad Apache'i deemoni ja kajavad mõned tekstid Apache vaikeveebilehele.

Rida EXPOSE juhendab Dockeri konteinerit kuulama sadamas 80, kuid port pole väljastpoolt saadaval. Viimane rida annab konteinerile käsu pärast konteineri käivitamist käivitada esiplaanil Apache-teenus.

3. Viimane asi, mida peame tegema, on alustada pildi loomist käsu allpool väljaandmisega, mis loob kohaliku Dockeri pildi nimega ubuntu-apache varem loodud Dockerfile'i põhjal, nagu on näidatud see näide:

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

4. Kui Docker on pildi loonud, saate loetleda kõik saadaolevad pildid ja tuvastada oma pildi, väljastades järgmise käsu:

# docker images

2. samm: käivitage konteiner ja juurdepääs Apache'ile LAN-ist

5. Konteineri pidevaks (taustal) käitamiseks ja konteineri avatud teenustele (sadamatele) juurdepääsuks LAN-is hosti või muu kaugmasina kaudu, käivitage hosti terminali viipal järgmine käsk:

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

Siin käivitab suvand -d taustal konteineri ubuntu-apache (deemonina) ja suvand -p kaardistab konteineri pordi 80 oma kohaliku hostiga pordile 81. Väljaspool LAN-i juurdepääsu Apache teenusele pääseb ainult pordi 81 kaudu.

Netstat-käsk annab teile aimu, milliseid sadamaid hosti kuulab.

Pärast konteineri käivitamist võite käivitatava konteineri oleku kuvamiseks käivitada ka käsu docker ps .

6. Veebilehte saab kuvada teie hostil käsurealt, kasutades curl-utiliiti masina IP-aadressi, localhost'i või doki võrguliidese kaudu porti 81. Võrguliidese IP-aadresside kuvamiseks kasutage IP-käsurida.

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

7. Oma võrgu kaudu konteineriveebi külastamiseks avage kaugemas asukohas brauser ja kasutage HTTP-protokolli - selle masina IP-aadressi, kus konteiner töötab, millele järgneb port 81, nagu on näidatud alloleval pildil.

http://ip-address:81

8. Konteineris toimuvate protsesside sisemuse saamiseks väljastage järgmine käsk:

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

9. Konteinerite väljaandmise peatamine käsk docker stop , millele järgneb konteineri ID või nimi.

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

10. Kui soovite konteinerile kirjeldava nime määrata, kasutage valikut --name , nagu on näidatud allpool toodud näites:

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

Nüüd saate konteinerit manipuleerimiseks viidata (algus, peatus, ülemine, statistika jne) ainult määratud nime abil.

# docker stats my-www

3. samm: looge Dockeri konteineri jaoks kogu süsteemi hõlmav konfiguratsioonifail

11. Rakenduses CentOS/RHEL saate luua systemd konfiguratsioonifaili ja hallata konteinerit nagu tavaliselt mis tahes muu kohaliku teenuse puhul.

Näiteks looge järgmine käsk: uus systemd-fail nimega apache-docker.service :

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

faili apache-docker.service väljavõte:

[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. Pärast faili redigeerimise lõpetamist sulgege see, laadige muudatuste kajastamiseks uuesti süsteemi deemon ja käivitage konteiner, väljastades järgmised käsud:

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

See oli vaid lihtne näide selle kohta, mida saate teha lihtsa Dockerfile'iga, kuid saate eelnevalt ehitada üsna keerukaid rakendusi, mida saate minimaalsete ressursside ja vaevaga vaid mõne sekundi jooksul käivitada.

Lisalugemist: