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:
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
MAINTENER
= Awtur tal-immaġni tal-biniRUN
= Din l-istruzzjoni tista' tintuża fuq linji multipli u tmexxi kwalunkwe kmandi wara li tkun inħolqot immaġini Docker.CMD
= Mexxi kwalunkwe kmand meta tinbeda l-immaġni Docker. Uża struzzjoni CMD waħda biss f'Dockerfile.ENTRYPOINT
= L-istess bħal CMD iżda użat bħala l-kmand ewlieni għall-immaġni.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.ENV
= Issettja varjabbli ambjentali tal-kontenitur.Ż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: