Kā automātiski izveidot un konfigurēt pielāgotus Docker attēlus, izmantojot Dockerfile - 3. daļa


Šajā apmācībā galvenā uzmanība tiks pievērsta tam, kā izveidot pielāgotu Docker attēlu, pamatojoties uz Ubuntu ar instalētu Apache pakalpojumu. Viss process tiks automatizēts, izmantojot Dockerfile.

Docker attēlus var automātiski veidot no teksta failiem ar nosaukumu Dockerfiles. Docker fails satur soli pa solim sakārtotas instrukcijas vai komandas, ko izmanto, lai izveidotu un konfigurētu Docker attēlu.

  • Instalējiet Docker un uzziniet, kā manipulēt ar Docker konteineriem - 1. daļa
  • Izvietojiet un palaidiet programmas zem Docker Containers - 2. daļa

Būtībā Docker fails satur dažādas instrukcijas, lai izveidotu un konfigurētu konkrētu konteineru, pamatojoties uz jūsu prasībām. Visbiežāk tiek izmantotas šādas instrukcijas, no kurām dažas ir obligātas:

  1. FROM = Obligāts kā pirmais norādījums Docker failā. Uzdod Dokeram izvilkt bāzes attēlu, no kura veidojat jauno attēlu. Izmantojiet tagu, lai norādītu precīzu attēlu, no kura veidojat:

Ex: FROM ubuntu:20.04

  1. MAINTAINER = Veidojuma attēla autors
  2. RUN = Šo instrukciju var izmantot vairākās rindās un izpildīt visas komandas pēc Docker attēla izveides.
  3. CMD = Palaidiet jebkuru komandu, palaižot Docker attēlu. Dockerfailā izmantojiet tikai vienu CMD instrukciju.
  4. ENTRYPOINT = Tas pats, kas CMD, bet tiek izmantots kā galvenā attēla komanda.
  5. EXPOSE = uzdod konteineram darboties klausīties tīkla portos. Pēc noklusējuma konteinera porti nav pieejami no resursdatora.
  6. ENV = Iestatiet konteinera vides mainīgos.
  7. ADD = Kopēt resursus (failus, direktorijus vai failus no vietrāžiem URL).

1. darbība: Dockerfile krātuves izveide vai rakstīšana

1. Pirmkārt, izveidosim sava veida Dockerfile krātuves, lai nākotnē atkārtoti izmantotu failus citu attēlu radīšanai. Izveidojiet tukšu direktoriju kaut kur /var nodalījumā, kur mēs izveidosim failu ar instrukcijām, kas tiks izmantotas, lai izveidotu jauno Docker attēlu.

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

2. Pēc tam sāciet rediģēt failu, izpildot šādus norādījumus:

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

Dokerfile fragments:

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

Apskatīsim faila instrukcijas:

Pirmajā rindiņā ir teikts, ka mēs veidojam no Ubuntu attēla. Ja nav iesniegta neviena atzīme, sakiet, piemēram, 14:10, tiek izmantots jaunākais Docker Hub attēls.

Otrajā rindiņā esam pievienojuši attēla veidotāja vārdu un e-pasta adresi. Nākamās divas RUN līnijas tiks izpildītas konteinerā, veidojot attēlu, un instalēs Apache dēmonu un atbalsos tekstu noklusējuma apache tīmekļa lapā.

LINE EXPOSE norādīs Docker konteineram klausīties 80. portu, bet ārpusei osta nebūs pieejama. Pēdējā rinda pēc konteinera palaišanas liek konteineram palaist Apache pakalpojumu priekšplānā.

3. Pēdējā lieta, kas mums jādara, ir sākt veidot attēlu, izdodot zemāk esošo komandu, kas lokāli izveidos jaunu Docker attēlu ar nosaukumu ubuntu-apache , pamatojoties uz iepriekš izveidoto Dockerfile, kā parādīts šis piemērs:

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

4. Kad Docker ir izveidojis attēlu, jūs varat uzskaitīt visus pieejamos attēlus un identificēt savu attēlu, izdodot šādu komandu:

# docker images

2. darbība: palaidiet konteineru un piekļuvi Apache no LAN

5. Lai nepārtraukti (fonā) darbinātu konteineru un piekļūtu konteinera pakļautajiem pakalpojumiem (portiem) no resursdatora vai citas jūsu LAN tālvadības mašīnas, palaidiet zemāk redzamo komandu sava resursdatora termināla uzvednē:

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

Šeit opcija -d palaiž konteineru ubuntu-apache fonā (kā dēmonu), un opcija -p kartē konteinera portu 80 uz vietējo hostta 81. portu. Ārpus LAN piekļuvi Apache pakalpojumam var sasniegt tikai caur 81. portu.

Netstat komanda dos jums priekšstatu par to, kādās ostās resursdators klausās.

Pēc konteinera palaišanas varat arī palaist komandu docker ps , lai skatītu darbojošā konteinera statusu.

6. Tīmekļa vietni var parādīt jūsu resursdatorā no komandrindas, izmantojot čokurošanās utilītu pret jūsu mašīnas IP adresi, vietējo hostu vai dokera tīkla saskarni 81. portā. Izmantojiet IP komandrindu, lai parādītu tīkla saskarnes IP adreses.

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

7. Lai no sava tīkla apmeklētu konteinera vietni, atveriet pārlūku attālā vietā un izmantojiet HTTP protokolu - tās mašīnas IP adresi, kurā darbojas konteiners, kam seko 81. ports, kā parādīts zemāk esošajā attēlā.

http://ip-address:81

8. Lai uzzinātu, kādi procesi notiek konteinerā, izdodiet šādu komandu:

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

9. Lai apturētu konteinera izdošanas komandu docker stop , kam seko konteinera ID vai nosaukums.

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

10. Ja vēlaties piešķirt konteineram aprakstošu nosaukumu, izmantojiet opciju --name , kā parādīts šajā piemērā:

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

Tagad jūs varat atsaukties uz konteineru manipulācijām (sākums, apstāšanās, augšdaļa, statistika utt.) Tikai, izmantojot piešķirto nosaukumu.

# docker stats my-www

3. darbība: izveidojiet visas sistēmas konfigurācijas failu Docker Container

11. Vietnē CentOS/RHEL jūs varat izveidot sistēmas konfigurācijas failu un pārvaldīt konteineru tāpat kā parasti jebkuram citam vietējam pakalpojumam.

Piemēram, izveidojiet jaunu systemd failu ar nosaukumu, teiksim, apache-docker.service , izmantojot šādu komandu:

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

apache-docker.service faila fragments:

[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ēc faila rediģēšanas pabeigšanas aizveriet to, atkārtoti ielādējiet sistēmas dēmonu, lai atspoguļotu izmaiņas, un palaidiet konteineru, izsniedzot šādas komandas:

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

Tas bija tikai vienkāršs piemērs tam, ko jūs varat darīt ar vienkāršu Dockerfile, taču jūs varat iepriekš izveidot dažas diezgan sarežģītas lietojumprogrammas, kuras varat aktivizēt tikai dažu sekunžu laikā ar minimāliem resursiem un pūlēm.

Papildu lasījums: