Kaip automatiškai sukurti ir konfigūruoti pasirinktinius „Docker“ vaizdus naudojant „Dockerfile“ - 3 dalis


Šioje pamokoje daugiausia dėmesio bus skiriama tam, kaip sukurti pasirinktinį „Docker“ vaizdą, pagrįstą „Ubuntu“ su įdiegta „Apache“ paslauga. Visas procesas bus automatizuotas naudojant „Dockerfile“.

„Docker“ vaizdus galima automatiškai sukurti iš tekstinių failų, pavadintų „Dockerfiles“. „Docker“ faile yra nuoseklios instrukcijos arba komandos, naudojamos kuriant ir konfigūruojant „Docker“ vaizdą.

  • Įdiekite „Docker“ ir sužinokite, kaip manipuliuoti „Docker“ konteineriais - 1 dalis
  • Diegkite ir paleiskite programas „Docker Containers“ - 2 dalyje

Iš esmės „Docker“ faile yra įvairių instrukcijų, kaip sukurti ir sukonfigūruoti konkretų konteinerį pagal jūsų reikalavimus. Šios instrukcijos yra dažniausiai naudojamos, kai kurios iš jų yra privalomos:

  1. FROM = Privaloma kaip pirmoji „Docker“ failo instrukcija. Nurodo „Docker“ ištraukti pagrindinį vaizdą, iš kurio kuriate naują vaizdą. Norėdami nurodyti tikslų vaizdą, kurį kuriate, naudokite žymą:

Ex: FROM ubuntu:20.04

  1. MAINTAINER = Kūrimo vaizdo autorius
  2. RUN = Ši instrukcija gali būti naudojama keliose eilutėse ir gali paleisti bet kurias komandas sukūrus „Docker“ vaizdą.
  3. CMD = Paleidus „Docker“ vaizdą vykdykite bet kurią komandą. „Dockerfile“ naudokite tik vieną CMD instrukciją.
  4. ENTRYPOINT = Tas pats kaip CMD, bet naudojamas kaip pagrindinė paveikslėlio komanda.
  5. EXPOSE = nurodo sudėtiniam rodiniui, kai jis veikia, klausytis tinklo prievadų. Pagal numatytuosius nustatymus konteinerio prievadų negalima pasiekti iš pagrindinio kompiuterio.
  6. ENV = Nustatykite sudėtinio rodinio aplinkos kintamuosius.
  7. ADD = Kopijuoti išteklius (failus, katalogus ar failus iš URL).

1 žingsnis: „Dockerfile“ saugyklos kūrimas arba rašymas

1. Pirmiausia sukurkime kažkokias „Dockerfile“ saugyklas, kad ateityje pakartotinai naudotume failus kurdami kitus vaizdus. Padarykite tuščią katalogą kur nors /var skaidinyje, kuriame sukursime failą su instrukcijomis, kurios bus naudojamos naujam „Docker“ vaizdui kurti.

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

2. Tada pradėkite redaguoti failą atlikdami šias instrukcijas:

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

„Dokerfile“ ištrauka:

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

Dabar pereikime failo instrukcijas:

Pirmoji eilutė mums sako, kad mes kuriame iš „Ubuntu“ vaizdo. Jei nepateikta jokia žyma, tarkime, pavyzdžiui, 14:10, naudojamas naujausias „Docker Hub“ vaizdas.

Antroje eilutėje pridėjome vaizdo kūrėjo vardą ir el. Pašto adresą. Kitos dvi RUN eilutės bus vykdomos talpykloje kuriant vaizdą ir įdiegs „Apache“ deemoną bei atkartos tekstą į numatytąjį „Apache“ tinklalapį.

„EXPOSE“ linija nurodys „Docker“ konteineriui klausytis 80 prievado, tačiau uostas nebus prieinamas lauke. Paskutinėje eilutėje nurodoma konteineriui paleisti „Apache“ paslaugą priekiniame plane, kai paleidžiamas konteineris.

3. Paskutinis dalykas, kurį turime padaryti, yra pradėti kurti vaizdą išduodant žemiau esančią komandą, kuri vietoje sukurs naują „Docker“ vaizdą pavadinimu ubuntu-apache , remiantis anksčiau sukurtu „Dockerfile“, kaip parodyta šis pavyzdys:

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

4. Kai „Docker“ sukurs vaizdą, galite išvardyti visus galimus vaizdus ir atpažinti savo vaizdą, pateikdami šią komandą:

# docker images

2 žingsnis: Paleiskite „Container and Access Apache“ iš LAN

5. Jei norite nuolat paleisti konteinerį (fone) ir prieigą prie konteinerio veikiamų paslaugų (prievadų) iš pagrindinio kompiuterio ar kito nuotolinio kompiuterio, esančio jūsų LAN tinkle, pagrindinio kompiuterio terminalo eilutėje vykdykite šią komandą:

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

Čia parinktis -d paleidžia konteinerį ubuntu-apache fone (kaip deemoną), o parinktis -p žymi konteinerio prievadą 80 į jūsų vietinį prieglobos prievadą 81. Išorinį LAN prieigą prie „Apache“ paslaugos galima pasiekti tik per 81 prievadą.

„Netstat“ komanda suteiks jums idėją apie tai, kokių prievadų klauso pagrindinė kompiuteris.

Paleidus sudėtinį rodinį, taip pat galite paleisti komandą docker ps , kad peržiūrėtumėte veikiančio konteinerio būseną.

6. Tinklalapį galima rodyti pagrindiniame kompiuteryje iš komandinės eilutės, naudojant „curl“ įrankį, esantį jūsų kompiuterio IP adrese, „localhost“ arba „Docker“ tinklo sąsajoje 81 prievade. Norėdami parodyti tinklo sąsajos IP adresus, naudokite IP komandinę eilutę.

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

7. Norėdami apsilankyti konteinerio tinklalapyje iš savo tinklo, atidarykite naršyklę atokioje vietoje ir naudokite HTTP protokolą - mašinos, kurioje veikia konteineris, IP adresą, o po to 81 prievadą, kaip parodyta žemiau esančiame paveikslėlyje.

http://ip-address:81

8. Norėdami sužinoti, kokie procesai vyksta talpykloje, pateikite šią komandą:

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

9. Norėdami sustabdyti konteinerio išdavimo komandą docker stop , po kurios nurodomas konteinerio ID arba pavadinimas.

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

10. Jei norite priskirti aprašomąjį konteinerio pavadinimą, naudokite parinktį --name , kaip parodyta toliau pateiktame pavyzdyje:

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

Dabar manipuliavimo talpyklą (pradžia, sustabdymas, viršuje, statistika ir kt.) Galite nurodyti tik naudodami priskirtą pavadinimą.

# docker stats my-www

3 žingsnis: sukurkite visos sistemos „Docker Container“ konfigūracijos failą

11. „CentOS/RHEL“ galite sukurti „systemd“ konfigūracijos failą ir tvarkyti konteinerį, kaip paprastai darote bet kuriai kitai vietinei paslaugai.

Pvz., Sukurkite naują „systemd“ failą, tarkime, apache-docker.service naudodami šią komandą:

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

apache-docker.service failo ištrauka:

[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. Baigę redaguoti failą, uždarykite jį, iš naujo įkelkite „systemd“ deemoną, kad atspindėtų pakeitimus, ir paleiskite konteinerį išleisdami šias komandas:

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

Tai buvo tik paprastas pavyzdys, ką galite padaryti naudodami paprastą „Dockerfile“ failą, tačiau galite iš anksto sukurti gana sudėtingas programas, kurias galite paleisti vos per kelias sekundes su minimaliais ištekliais ir pastangomis.

Papildoma literatūra: