Jinsi ya Kuunda na Kusanidi Picha za Docker Kiotomatiki na Dockerfile - Sehemu ya 3


Mafunzo haya yatazingatia jinsi ya kuunda picha maalum ya Docker kulingana na Ubuntu na huduma ya Apache iliyosakinishwa. Mchakato wote utaendeshwa kiotomatiki kwa kutumia Dockerfile.

Picha za Docker zinaweza kujengwa kiotomatiki kutoka kwa faili za maandishi, zinazoitwa Dockerfiles. Faili ya Docker ina maagizo ya hatua kwa hatua au amri zinazotumiwa kuunda na kusanidi picha ya Docker.

  • Sakinisha Docker na Ujifunze Udhibiti wa Kontena la Doka - Sehemu ya 1
  • Pekeza na Utekeleze Maombi chini ya Vyombo vya Docker - Sehemu ya 2

Kimsingi, faili ya Docker ina maagizo anuwai ili kuunda na kusanidi kontena fulani kulingana na mahitaji yako. Maagizo yafuatayo ndiyo yanayotumika zaidi, baadhi yao yakiwa ya lazima:

  1. KUTOKA = Lazima kama maagizo ya kwanza katika faili ya Docker. Inaamuru Docker kuvuta picha ya msingi ambayo unaunda picha mpya. Tumia lebo ili kubainisha picha kamili ambayo unaunda:

Ex: FROM ubuntu:20.04

  1. MAINTAINER = Mwandishi wa picha ya muundo
  2. RUN = Maagizo haya yanaweza kutumika kwenye mistari mingi na kutekeleza amri zozote baada ya kuunda picha ya Docker.
  3. CMD = Tekeleza amri yoyote wakati picha ya Docker imeanzishwa. Tumia maagizo moja tu ya CMD kwenye faili ya Docker.
  4. ENTRYPOINT = Sawa na CMD lakini inatumika kama amri kuu ya picha.
  5. EXPOSE = Huagiza chombo kusikiliza kwenye milango ya mtandao wakati wa kuendesha. Milango ya kontena haiwezi kufikiwa kutoka kwa seva pangishi kwa chaguo-msingi.
  6. ENV = Weka vigezo vya mazingira ya kontena.
  7. ADD = Nakili rasilimali (faili, saraka, au faili kutoka URLs).

Hatua ya 1: Kuunda au Kuandika Hifadhi ya Dockerfile

1. Kwanza, hebu tuunde aina fulani ya hazina za Dockerfile ili kutumia tena faili katika siku zijazo ili kuunda picha nyingine. Tengeneza saraka tupu mahali fulani katika kizigeu cha /var ambapo tutaunda faili na maagizo ambayo yatatumika kuunda picha mpya ya Docker.

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

2. Kisha, anza kuhariri faili kwa maagizo yafuatayo:

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

Dokezo la faili:

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

Sasa, wacha tupitie maagizo ya faili:

Mstari wa kwanza unatuambia kwamba tunaunda kutoka kwa picha ya Ubuntu. Ikiwa hakuna lebo iliyowasilishwa, sema 14:10 kwa mfano, picha ya hivi punde kutoka Docker Hub inatumiwa.

Kwenye mstari wa pili, tumeongeza jina na barua pepe ya mtengenezaji wa picha. Mistari miwili inayofuata ya RUN itatekelezwa kwenye chombo wakati wa kuunda picha na itasakinisha Apache daemon na kutoa mwangwi wa maandishi kwenye ukurasa wa wavuti wa apache.

Laini ya EXPOSE itaelekeza kontena la Docker kusikiliza kwenye bandari 80, lakini bandari haitapatikana nje. Mstari wa mwisho unaelekeza kontena kuendesha huduma ya Apache mbele baada ya kontena kuanza.

3. Jambo la mwisho tunalohitaji kufanya ni kuanza kuunda picha kwa kutoa amri iliyo hapa chini, ambayo itaunda ndani ya nchi picha mpya ya Docker iitwayo ubuntu-apache kulingana na Dockerfile iliyoundwa hapo awali, kama inavyoonyeshwa kwenye mfano huu:

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

4. Baada ya picha kuundwa na Docker, unaweza kuorodhesha picha zote zinazopatikana na kutambua picha yako kwa kutoa amri ifuatayo:

# docker images

Hatua ya 2: Endesha Chombo na Ufikia Apache kutoka kwa LAN

5. Ili kuendesha kontena kwa kuendelea (chinichini) na kufikia huduma za kontena zilizofichuliwa (bandari) kutoka kwa seva pangishi au mashine nyingine ya mbali kwenye LAN yako, endesha amri iliyo hapa chini kwenye kidokezo cha kituo cha seva pangishi:

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

Hapa, chaguo la -d huendesha chombo cha ubuntu-apache chinichini (kama daemon) na chaguo la -p huweka lango la kontena 80. kwa kituo chako cha mwenyeji 81. Ufikiaji wa nje wa LAN kwa huduma ya Apache unaweza kufikiwa kupitia bandari 81 pekee.

Amri ya Netstat itakupa wazo kuhusu bandari gani mwenyeji anasikiliza.

Baada ya kontena kuanzishwa, unaweza pia kutekeleza amri ya docker ps ili kuona hali ya chombo kinachoendesha.

6. Ukurasa wa tovuti unaweza kuonyeshwa kwenye seva pangishi yako kutoka kwa mstari wa amri kwa kutumia matumizi ya curl dhidi ya Anwani ya IP ya mashine yako, mwenyeji, au kiolesura cha wavu cha docker kwenye mlango wa 81. Tumia laini ya amri ya IP ili kuonyesha anwani za IP za kiolesura cha mtandao.

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

7. Ili kutembelea ukurasa wa tovuti wa kontena kutoka kwa mtandao wako, fungua kivinjari katika eneo la mbali na utumie itifaki ya HTTP, Anwani ya IP ya mashine ambapo kontena inaendeshwa, ikifuatiwa na port 81 kama inavyoonyeshwa kwenye picha iliyo hapa chini.

http://ip-address:81

8. Ili kupata ndani ya michakato gani inayoendelea ndani ya kontena toa amri ifuatayo:

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

9. Kusimamisha utoaji wa kontena docker stop amri ikifuatiwa na kitambulisho cha chombo au jina.

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

10. Iwapo ungependa kupeana jina la ufafanuzi kwa kontena tumia chaguo la --name kama inavyoonyeshwa katika mfano ulio hapa chini:

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

Sasa unaweza kurejelea kontena kwa ghiliba (anza, simamisha, juu, takwimu, n.k) tu kwa kutumia jina ulilopewa.

# docker stats my-www

Hatua ya 3: Unda Faili ya Usanidi wa Mfumo mzima kwa Chombo cha Docker

11. Kwenye CentOS/RHEL unaweza kuunda faili ya usanidi ya mfumo na kudhibiti kontena kama kawaida katika huduma nyingine yoyote ya ndani.

Kwa mfano, unda faili mpya ya mfumo inayoitwa, tuseme, apache-docker.service kwa kutumia amri ifuatayo:

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

dondoo ya faili ya apache-docker.service:

[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. Baada ya kumaliza kuhariri faili, ifunge, pakia upya daemon ya systemd ili kuonyesha mabadiliko na anza kontena kwa kutoa amri zifuatazo:

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

Huu ulikuwa ni mfano rahisi tu wa kile unachoweza kufanya na Dockerfile rahisi lakini unaweza kuunda mapema programu kadhaa za kisasa ambazo unaweza kuwasha moto kwa sekunde chache na rasilimali na bidii kidogo.

Kusoma Zaidi: