Ockörite doker suratlaryny Dockerfile bilen nädip awtomatiki gurmaly we sazlamaly - 3-nji bölüm


Bu gollanma, Apache hyzmaty gurnalan Ubuntu esasly ýörite Docker şekilini nädip gurmalydygyna ünsi jemlär. Tutuş proses Dockerfile ulanyp awtomatlaşdyrylar.

Docker şekilleri Dockerfiles atly tekst faýllaryndan awtomatiki gurlup bilner. Docker faýlynda Docker şekilini döretmek we düzmek üçin ulanylýan ädimme-ädim sargyt edilen görkezmeler ýa-da buýruklar bar.

  • Docker guruň we Docker konteýner dolandyryşyny öwreniň - 1-nji bölüm
  • Docker konteýnerleriniň aşagyndaky programmalary ýerleşdiriň we işlediň - 2-nji bölüm

Esasan, Docker faýlynda talaplaryňyza görä belli bir konteýner gurmak we düzmek üçin dürli görkezmeler bar. Aşakdaky görkezmeler iň köp ulanylýar, olaryň käbiri hökmanydyr:

  1. FROM =Docker faýlyndaky ilkinji görkezme hökmünde hökmany. Dokere täze şekili gurýan esasy suratyňyzy çekmegi tabşyrýar. Gurýan takyk suratyňyzy görkezmek üçin bellik ulanyň:

Ex: FROM ubuntu:20.04

  1. MAINTAINER =Gurluş şekiliniň awtory
  2. RUN =Bu görkezme birnäçe setirde ulanylyp bilner we Docker şekili döredilenden soň islendik buýrugy işledip biler.
  3. CMD =Docker şekili başlanda islendik buýrugy işlediň. Dockerfile-de diňe bir CMD görkezmesini ulanyň.
  4. ENTRYPOINT =CMD bilen birmeňzeş, ýöne surat üçin esasy buýruk hökmünde ulanylýar.
  5. EXPOSE =Konteýner işleýän wagtyňyz tor portlaryny diňlemegi tabşyrýar. Konteýner portlaryna öý eýesinden adaty ýagdaýda baryp bolmaýar.
  6. ENV =Konteýner gurşawynyň üýtgeýjilerini düzüň.
  7. ADD =Resurslary göçüriň (faýllary, kataloglary ýa-da URL-lerdäki faýllary).

1-nji ädim: Dockerfile ammaryny döretmek ýa-da ýazmak

1. Ilki bilen, beýleki suratlary döretmek üçin geljekde faýllary gaýtadan ulanmak üçin Dockerfile ammarlaryny döredeliň. /var bölüminiň bir ýerinde boş bukja ýasaýyň, bu ýerde täze Docker şekilini gurmak üçin ulanyljak görkezmeler bilen faýly dörederis.

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

2. Ondan soň faýly aşakdaky görkezmeler bilen redaktirläp başlaň:

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

Dokerfile parçasy:

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

Indi, faýl görkezmelerine geçeliň:

Birinji setir, Ubuntu şekilinden gurýandygymyzy aýdýar. Bellik tabşyrylmasa, mysal üçin 14:10 diýiň, Docker Hub-dan iň soňky surat ulanylýar.

Ikinji setirde, surat döredijiniň adyny we e-poçta goşduk. Indiki iki RUN setiri şekil gurlanda konteýnerde ýerine ýetiriler we Apache daemonyny gurar we käbir tekstleri adaty apache web sahypasyna ýaňlandyrar.

EXPOSE setiri Docker konteýnerine 80-nji portda diňlemegi görkezer, emma port daşarda elýeterli bolmaz. Iň soňky setir, konteýner işe başlansoň, Apache hyzmatyny birinji hatarda işlemegi tabşyrýar.

3. Iň soňky etmeli zadymyz, aşakdaky buýrugy bermek bilen şekili döretmäge başlamak, bu ýerde görkezilişi ýaly ozal döredilen Dockerfile esasynda ubuntu-apache atly täze Docker şekilini döreder. bu mysal:

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

4. Surat Docker tarapyndan döredilenden soň, bar bolan suratlary sanap bilersiňiz we aşakdaky buýrugy bermek bilen suratyňyzy kesgitläp bilersiňiz:

# docker images

2-nji ädim: Konteýni işlediň we LAN-dan giriş Apache

5. Konteýni yzygiderli (fonda) işletmek we LAN-daky öý eýesinden ýa-da beýleki uzak enjamdan konteýneriň açyk hyzmatlaryna (portlaryna) girmek üçin aşakdaky buýrugy kabul ediji terminalynda ýerine ýetiriň:

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

Bu ýerde, -d opsiýasy fonda (daemon hökmünde) ubuntu-apache konteýnerini işledýär we -p opsiýasy konteýner portunyň kartasyny 80 görkezýär ýerlihost portuňyza 81. Apache hyzmatyna LAN-dan başga diňe 81-nji port arkaly baryp bolýar.

Netstat buýrugy, öý eýesiniň haýsy portlary diňleýändigi barada düşünje berer.

Konteýner işe başlansoň, işleýän konteýneriň ýagdaýyny görmek üçin docker ps buýrugyny hem işledip bilersiňiz.

6. Web sahypasy, 81-nji portdaky enjamyňyzyň IP adresi, lokalhost ýa-da doker net interfeýsine garşy egrilik programmasyny ulanyp, buýruk setirinden görkezilip bilner. Tor interfeýsiniň IP adreslerini görkezmek üçin IP buýruk setirini ulanyň.

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

7. Toruňyzdan konteýner web sahypasyna girmek üçin uzak bir ýerde brauzer açyň we konteýner işleýän maşynyň IP adresi, aşakdaky suratda görkezilişi ýaly 81-nji port bilen HTTP protokolyny ulanyň.

http://ip-address:81

8. Konteýneriň içinde haýsy prosesleriň işleýändigini bilmek üçin aşakdaky buýrugy beriň:

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

9. Konteýner meselesini duruzmak üçin docker stop buýrugy, soň bolsa konteýner ID ýa-da ady.

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

10. Konteýner üçin düşündirişli at bellemek isleseňiz, aşakdaky mysalda görkezilişi ýaly --name opsiýasyny ulanyň:

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

Indi manipulýasiýa üçin konteýner (başlangyç, durmak, ýokarky, statistika we ş.m.) diňe bellenen atdan peýdalanyp bilersiňiz.

# docker stats my-www

3-nji ädim: Docker konteýner üçin ulgamlaýyn konfigurasiýa faýly dörediň

11. CentOS/RHEL-de systemd konfigurasiýa faýly döredip we beýleki ýerli hyzmatlar üçin adaty bolşy ýaly konteýner dolandyryp bilersiňiz.

Mysal üçin, aşakdaky buýrugy ulanyp, apache-docker.service atly täze systemd faýly dörediň:

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

apache-docker.service faýlyň bölegi:

[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. Faýly redaktirläniňizden soň, ony ýapyň, üýtgeşmeleri görkezmek we aşakdaky buýruklary bermek bilen konteýner işe başlamak üçin systemd daemonyny täzeden ýükläň:

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

Bu ýönekeý “Dockerfile” bilen näme edip boljakdygyňyzyň ýönekeý mysalydy, ýöne gaty az serişdeleri we güýjüňizi sanlyja sekundyň içinde ýakyp boljak gaty çylşyrymly programmalary öňünden gurup bilersiňiz.

Goşmaça okaň: