Kif Awtomatikament Tibni u Kkonfigurat Stampi Docker Custom b'Dockerfile - Parti 3


Dan it-tutorja se jikkonċentra fuq kif tibni immaġni Docker personalizzata bbażata fuq Ubuntu bis-servizz Apache installat. Il-proċess kollu se jkun awtomatizzat bl-użu ta 'Dockerfile.

Immaġini Docker jistgħu jinbnew awtomatikament minn fajls ta 'test, bl-isem Dockerfiles. Fajl Docker fih istruzzjonijiet ordnati pass pass jew kmandi użati biex tinħoloq u tiġi kkonfigurata immaġni Docker.

  • Installa Docker u Tgħallem il-Manipulazzjoni tal-Kontenituri Docker – Parti 1
  • Uża u Mexxi Applikazzjonijiet taħt Docker Containers – Parti 2

Bażikament, fajl Docker fih diversi struzzjonijiet sabiex jibni u kkonfigurat kontenitur speċifiku bbażat fuq ir-rekwiżiti tiegħek. L-istruzzjonijiet li ġejjin huma l-aktar użati, uħud minnhom huma obbligatorji:

  1. FROM = Obbligatorju bħala l-ewwel istruzzjoni f'fajl Docker. Jagħti istruzzjonijiet lil Docker biex jiġbed l-immaġni bażi li minnha qed tibni l-immaġni l-ġdida. Uża tikketta biex tispeċifika l-immaġni eżatta li minnha qed tibni:

Ex: FROM ubuntu:20.04

  1. MAINTENER = Awtur tal-immaġni tal-bini
  2. RUN = Din l-istruzzjoni tista' tintuża fuq linji multipli u tmexxi kwalunkwe kmandi wara li tkun inħolqot immaġini Docker.
  3. CMD = Mexxi kwalunkwe kmand meta tinbeda l-immaġni Docker. Uża struzzjoni CMD waħda biss f'Dockerfile.
  4. ENTRYPOINT = L-istess bħal CMD iżda użat bħala l-kmand ewlieni għall-immaġni.
  5. ESPONI = Jagħti istruzzjonijiet lill-kontenitur biex jisma' fuq il-portijiet tan-netwerk meta jkun qed jaħdem. Il-portijiet tal-kontejners ma jistgħux jintlaħqu mill-host awtomatikament.
  6. ENV = Issettja varjabbli ambjentali tal-kontenitur.
  7. ŻID = Ikkopja riżorsi (fajls, direttorji, jew fajls minn URLs).

Pass 1: Ħolqien jew Kitba ta' Repożitorju ta' Dockerfile

1. L-ewwel, ejja noħolqu xi tip ta 'repożitorji Dockerfile sabiex jerġgħu jużaw fajls fil-futur biex joħolqu immaġini oħra. Agħmel direttorju vojt x'imkien fil-partizzjoni /var fejn se noħolqu l-fajl bl-istruzzjonijiet li se jintużaw biex tinbena l-immaġni Docker li għadha kif ġiet.

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

2. Sussegwentement, ibda teditja l-fajl bl-istruzzjonijiet li ġejjin:

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

Silta ta' 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

Issa, ejja ngħaddu mill-istruzzjonijiet tal-fajl:

L-ewwel linja tgħidilna li qed nibnu minn immaġni Ubuntu. Jekk ma tiġi sottomessa l-ebda tag, ngħidu aħna 14:10 per eżempju, tintuża l-aħħar immaġni minn Docker Hub.

Fit-tieni linja, żidna l-isem u l-email tal-kreatur tal-immaġni. Żewġ linji RUN li jmiss se jiġu eżegwiti fil-kontenitur meta tinbena l-immaġini u se jinstallaw Apache daemon u jsemmu xi test fil-paġna web tal-apache default.

Il-linja EXPOSE se tagħti struzzjonijiet lill-kontenitur Docker biex jisma 'fuq il-port 80, iżda l-port mhux se jkun disponibbli għal barra. L-aħħar linja tagħti struzzjonijiet lill-kontenitur biex iħaddem is-servizz Apache fit-tagħrif miksub wara li jinbeda l-kontenitur.

3. L-aħħar ħaġa li rridu nagħmlu hija li nibdew noħolqu l-immaġini billi noħorġu l-kmand t'hawn taħt, li lokalment se toħloq immaġni Docker ġdida bl-isem ubuntu-apache ibbażata fuq il-Dockerfile maħluqa qabel, kif muri f' dan l-eżempju:

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

4. Wara li l-immaġni tkun inħolqot minn Docker, tista' telenka l-immaġini kollha disponibbli u tidentifika l-immaġni tiegħek billi toħroġ il-kmand li ġej:

# docker images

Pass 2: Mexxi l-Kontenitur u Aċċess Apache minn LAN

5. Sabiex tmexxi l-kontenitur kontinwament (fl-isfond) u taċċessa s-servizzi esposti tal-kontenitur (portijiet) mill-host jew magna oħra remota fil-LAN tiegħek, mexxi l-kmand ta 'hawn taħt fuq il-pront tat-terminal ospitanti tiegħek:

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

Hawnhekk, l-għażla -d tmexxi l-kontenitur ubuntu-apache fl-isfond (bħala daemon) u l-għażla -p timmappa l-port tal-kontenitur 80 għall-port localhost tiegħek 81. Barra l-aċċess LAN għas-servizz Apache jista 'jintlaħaq permezz tal-port 81 biss.

Il-kmand Netstat jagħtik idea dwar liema portijiet qed jisma' l-host.

Wara li l-kontenitur ikun inbeda, tista' wkoll tħaddem il-kmand docker ps biex tara l-istatus tal-kontenitur li qed jaħdem.

6. Il-paġna web tista 'tintwera fuq il-host tiegħek mil-linja tal-kmand billi tuża l-utilità curl kontra l-Indirizz IP tal-magna tiegħek, localhost, jew interface docker net fuq il-port 81. Uża l-linja tal-kmand tal-IP biex turi l-indirizzi IP tal-interface tan-netwerk.

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

7. Biex iżżur il-paġna web tal-kontejner min-netwerk tiegħek, iftaħ browser f'post remot u uża protokoll HTTP, l-Indirizz IP tal-magna fejn qed jaħdem il-kontenitur, segwit mill-port 81 kif muri fuq l-immaġni hawn taħt.

http://ip-address:81

8. Biex tikseb ġewwa ta 'liema proċessi qed jaħdmu ġewwa l-kontenitur agħti l-kmand li ġej:

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

9. Biex twaqqaf il-ħruġ tal-kontenitur docker stop kmand segwit mill-ID jew l-isem tal-kontenitur.

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

10. Fil-każ li trid tassenja isem deskrittiv għall-kontenitur uża l-għażla --name kif muri fl-eżempju hawn taħt:

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

Issa tista' tirreferi għall-kontenitur għall-manipulazzjoni (start, stop, top, stats, eċċ) biss billi tuża l-isem assenjat.

# docker stats my-www

Pass 3: Oħloq Fajl ta' Konfigurazzjoni mas-Sistema kollha għall-Kontenitur Docker

11. Fuq CentOS/RHEL tista 'toħloq fajl ta' konfigurazzjoni systemd u timmaniġġja l-kontenitur kif tagħmel normalment għal kwalunkwe servizz lokali ieħor.

Pereżempju, oħloq fajl systemd ġdid bl-isem, ejja ngħidu, apache-docker.service billi tuża l-kmand li ġej:

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

silta tal-fajl 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. Wara li tispiċċa teditja l-fajl, agħlaqha, erġa' tagħbija d-daemon systemd biex tirrifletti l-bidliet u ibda l-kontenitur billi toħroġ il-kmandi li ġejjin:

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

Dan kien biss eżempju sempliċi ta 'dak li tista' tagħmel b'Dockerfile sempliċi iżda tista 'tibni minn qabel xi applikazzjonijiet pjuttost sofistikati li tista' tispara fi ftit sekondi b'riżorsi minimi u sforz.

Aktar Qari: