Yadda ake Gina kai tsaye da Sanya Hotunan Docker Custom tare da Dockerfile - Kashi na 3


Wannan koyawa za ta mai da hankali kan yadda ake gina hoton Docker na al'ada dangane da Ubuntu tare da shigar da sabis na Apache. Dukkanin tsarin za a sarrafa shi ta atomatik ta amfani da Dockerfile.

Ana iya gina Hotunan Docker ta atomatik daga fayilolin rubutu, mai suna Dockerfiles. Fayil ɗin Docker ya ƙunshi umarni-mataki-mataki umarni ko umarni da aka yi amfani da su don ƙirƙira da daidaita hoton Docker.

  • Saka Docker kuma Koyi Sarrafa Kwantenan Docker - Kashi na 1
  • Sanya da Gudanar da Aikace-aikace a ƙarƙashin Docker Containers - Part 2

Ainihin, fayil ɗin Docker ya ƙunshi umarni daban-daban don ginawa da daidaita takamaiman akwati dangane da buƙatun ku. An fi amfani da waɗannan umarni masu zuwa, wasu daga cikinsu sun zama tilas:

  1. DAGA = Wajibi a matsayin umarni na farko a cikin fayil Docker. Ya umurci Docker don cire hoton tushe daga inda kuke gina sabon hoton. Yi amfani da alamar don tantance ainihin hoton da kuke ginawa:

Ex: FROM ubuntu:20.04

  1. Mai kula = Mawallafin hoton ginin
  2. RUN = Ana iya amfani da wannan umarnin akan layi da yawa kuma yana gudanar da kowane umarni bayan an ƙirƙiri hoton Docker.
  3. CMD = Gudanar da kowane umarni lokacin da aka fara hoton Docker. Yi amfani da umarnin CMD ɗaya kawai a cikin Dockerfile.
  4. ENTRYPOINT = Daidai da CMD amma ana amfani dashi azaman babban umarni don hoton.
  5. EXPOSE = Yana umurtar kwantena don sauraren tashoshin sadarwa lokacin aiki. Ba a iya isa ga tashar jiragen ruwa daga mai masauki ta tsohuwa.
  6. ENV = Saita masu canjin mahalli.
  7. ADD = Kwafi albarkatun (fayil, kundayen adireshi, ko fayiloli daga URLs).

Mataki 1: Ƙirƙirar ko Rubutun Ma'ajiyar Dockerfile

1. Da farko, bari mu ƙirƙiri wasu nau'ikan wuraren ajiyar Dockerfile don sake amfani da fayiloli a nan gaba don ƙirƙirar wasu hotuna. Yi kundin adireshi mara komai a wani wuri a cikin / var bangare inda za mu ƙirƙiri fayil ɗin tare da umarnin da za a yi amfani da shi don gina sabon hoton Docker.

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

2. Na gaba, fara gyara fayil ɗin tare da umarni masu zuwa:

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

Bayanin Dokerfile:

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

Yanzu, bari mu shiga cikin umarnin fayil:

Layin farko ya gaya mana cewa muna gini daga hoton Ubuntu. Idan ba a ƙaddamar da alamar ba, a ce 14:10 misali, ana amfani da sabon hoto daga Docker Hub.

A layi na biyu, mun ƙara suna da imel na mahaliccin hoton. Za a aiwatar da layukan RUN guda biyu na gaba a cikin akwati lokacin gina hoton kuma za su shigar da Apache daemon kuma su ƙara wasu rubutu a cikin tsohuwar shafin yanar gizon apache.

Layin EXPOSE zai umurci kwandon Docker don sauraron tashar tashar jiragen ruwa 80, amma tashar jiragen ruwa ba za ta kasance a waje ba. Layin ƙarshe ya umurci akwati don gudanar da sabis na Apache a gaba bayan an fara kwantena.

3. Abu na ƙarshe da ya kamata mu yi shi ne mu fara ƙirƙirar hoton ta hanyar ba da umarnin da ke ƙasa, wanda zai haifar da sabon hoton Docker mai suna ubuntu-apache bisa Dockerfile da aka ƙirƙira a baya, kamar yadda aka nuna a ciki. wannan misali:

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

4. Bayan Docker ya ƙirƙiri hoton, zaku iya jera duk hotunan da ke akwai kuma zaku gano hotonku ta hanyar ba da umarni mai zuwa:

# docker images

Mataki 2: Gudanar da Kwantena da Samun damar Apache daga LAN

5. Domin gudanar da kwantena ci gaba (a bayan fage) da samun dama ga ayyukan fallasa kwantena (tashoshin ruwa) daga mai watsa shiri ko wani injin nesa a cikin LAN ɗin ku, gudanar da umarnin da ke ƙasa akan saurin tashar ku:

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

Anan, zaɓin -d yana gudanar da akwati na ubuntu-apache a bango (a matsayin daemon) da zaɓin -p yana tsara tashar tashar jirgin ruwa 80 to your localhost tashar jiragen ruwa 81. A waje LAN damar zuwa Apache za a iya isa ta tashar jiragen ruwa 81 kawai.

Umurnin Netstat zai ba ku ra'ayi game da abin da tashar jiragen ruwa mai watsa shiri ke sauraro.

Bayan an fara akwati, zaku iya kuma kunna docker ps umarni don duba matsayin kwantena mai gudana.

6. Ana iya nuna shafin yanar gizon a kan mai masaukin ku daga layin umarni ta amfani da curl utility a kan na'urarku Adireshin IP, localhost, ko docker net interface akan tashar jiragen ruwa 81. Yi amfani da layin umarni na IP don nuna adiresoshin IP na cibiyar sadarwa.

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

7. Don ziyartar shafin yanar gizon kwantena daga cibiyar sadarwar ku, buɗe mashigar bincike a wuri mai nisa kuma yi amfani da ka'idar HTTP, adireshin IP na na'ura inda kwandon ke aiki, sai kuma tashar jiragen ruwa 81 kamar yadda aka kwatanta a hoton da ke ƙasa.

http://ip-address:81

8. Don samun cikin abin da matakai ke gudana a cikin akwati ba da umarni mai zuwa:

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

9. Don dakatar da batun kwantena docker stop umarni da ID ko suna ya biyo baya.

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

10. Idan kuna son sanya sunan kwatancen kwandon amfani da zaɓin --name kamar yadda aka nuna a cikin misalin da ke ƙasa:

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

Yanzu zaku iya yin la'akari da akwati don magudi (farawa, tsayawa, saman, ƙididdiga, da sauransu) kawai ta amfani da sunan da aka sanya.

# docker stats my-www

Mataki 3: Ƙirƙiri Fayil ɗin Kanfigareshan Tsari don Akwatin Docker

11. A kan CentOS/RHEL za ka iya ƙirƙirar fayil ɗin daidaitawa da sarrafa akwati kamar yadda kuka saba don kowane sabis na gida.

Misali, ƙirƙirar sabon tsarin fayil mai suna, bari mu ce, apache-docker.service ta amfani da umarni mai zuwa:

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

apache-docker.fayilolin sabis:

[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. Bayan kun gama gyara fayil ɗin, rufe shi, sake shigar da tsarin daemon don yin la'akari da canje-canje kuma fara akwati ta hanyar ba da umarni masu zuwa:

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

Wannan misali ne mai sauƙi na abin da za ku iya yi tare da Dockerfile mai sauƙi amma kuna iya pre-gina wasu kyawawan ƙa'idodi waɗanda za ku iya kunna wuta a cikin daƙiƙa kaɗan tare da ƙarancin albarkatu da ƙoƙari.

Kara karantawa: