Bii o ṣe le Ṣaifọwọyi ati Tunto Awọn aworan Docker Aṣa pẹlu Dockerfile - Apá 3


Ikẹkọ yii yoo ni idojukọ lori bii o ṣe le kọ aworan Docker aṣa ti o da lori Ubuntu pẹlu iṣẹ Apache ti a fi sii. Gbogbo ilana yoo jẹ adaṣe nipa lilo Dockerfile kan.

Awọn aworan Docker le jẹ itumọ laifọwọyi lati awọn faili ọrọ, ti a npè ni Dockerfiles. Faili Docker kan ni awọn ilana paṣẹ-nipasẹ-Igbese tabi awọn ofin ti a lo lati ṣẹda ati tunto aworan Docker kan.

  • Fi Docker sori ati Kọ ẹkọ Idari Apoti Docker - Apá 1
  • Firanṣẹ ati Ṣiṣe Awọn ohun elo labẹ Awọn apoti Docker - Apá 2

Ni ipilẹṣẹ, faili Docker kan ni awọn itọnisọna pupọ lati le kọ ati tunto apoti e kan pato ti o da lori awọn ibeere rẹ. Awọn itọnisọna wọnyi ni lilo julọ, diẹ ninu wọn jẹ dandan:

  1. LATI = Dandan bi itọnisọna akọkọ ninu faili Docker kan. Awọn itọnisọna Docker lati fa aworan ipilẹ lati eyiti o n kọ aworan tuntun. Lo aami kan lati ṣalaye aworan gangan lati eyiti o n kọ:

Ex: FROM ubuntu:20.04

  1. MIMỌNTA = Onkọwe ti aworan kikọ
  2. RUN = Itọsọna yii le ṣee lo lori awọn ila lọpọlọpọ ati ṣiṣe awọn aṣẹ eyikeyi lẹhin ti a ti ṣẹda aworan Docker kan.
  3. CMD = Ṣiṣe eyikeyi aṣẹ nigbati aworan Docker ti bẹrẹ. Lo itọnisọna CMD kan ṣoṣo ni Dockerfile.
  4. ENTRYPOINT = Kanna bi CMD ṣugbọn o lo bi aṣẹ akọkọ fun aworan naa.
  5. Ifihan = Nfun eiyan lati gbọ lori awọn ibudo nẹtiwọọki nigbati o nṣiṣẹ. Ko de ọdọ awọn ibudo apo eiyan lati ọdọ alejo nipasẹ aiyipada.
  6. ENV = Ṣeto awọn oniyipada ayika ayika apoti.
  7. ADD = Daakọ awọn orisun (awọn faili, awọn ilana, tabi awọn faili lati URL).

Igbesẹ 1: Ṣiṣẹda tabi Kikọ ibi ipamọ Dockerfile

1. Ni akọkọ, jẹ ki a ṣẹda iru awọn ibi ipamọ Dockerfile lati le tun lo awọn faili ni ọjọ iwaju lati ṣẹda awọn aworan miiran. Ṣe itọsọna ofo ni ibikan ni /var ipin nibi ti a yoo ṣẹda faili pẹlu awọn itọnisọna ti yoo lo lati kọ aworan Docker tuntun.

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

2. Itele, bẹrẹ ṣiṣatunkọ faili pẹlu awọn itọnisọna wọnyi:

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

Dokerfile ti yọ:

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

Bayi, jẹ ki a lọ nipasẹ awọn itọnisọna faili:

Laini akọkọ sọ fun wa pe a n kọ lati aworan Ubuntu. Ti ko ba fi ami si silẹ, sọ fun 14:10 fun apẹẹrẹ, aworan tuntun lati Docker Hub lo.

Lori laini keji, a ti ṣafikun orukọ ati imeeli ti ẹlẹda aworan. Awọn ila RUN meji ti nbọ ni yoo pa ni apoti nigba kikọ aworan naa ati pe yoo fi daemon Apache sii ati iwoyi ọrọ diẹ si oju-iwe wẹẹbu apache aiyipada.

Laini ifihan yoo sọ fun ohun elo Docker lati tẹtisi lori ibudo 80, ṣugbọn ibudo ko ni wa si ita. Laini ikẹhin kọ fun apo eiyan lati ṣiṣẹ iṣẹ Apache ni iwaju lẹhin ti apoti naa ti bẹrẹ.

3. Ohun ti o kẹhin ti a nilo lati ṣe ni lati bẹrẹ ṣiṣẹda aworan naa nipasẹ ipinfunni aṣẹ isalẹ, eyi ti yoo ṣẹda ni agbegbe ti aworan Docker tuntun ti a npè ni ubuntu-apache da lori Dockerfile ti a ṣẹda tẹlẹ, bi a ṣe han ninu apẹẹrẹ yii:

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

4. Lẹhin ti a ti ṣẹda aworan nipasẹ Docker, o le ṣe atokọ gbogbo awọn aworan to wa ki o ṣe idanimọ aworan rẹ nipa fifun aṣẹ wọnyi:

# docker images

Igbesẹ 2: Ṣiṣe Apoti ati Apamọ Wiwọle lati LAN

5. Lati le ṣiṣẹ apoti naa nigbagbogbo (ni abẹlẹ) ati wọle si awọn iṣẹ ti o farahan eiyan (awọn ebute oko oju omi) lati ọdọ olugbalejo tabi ẹrọ miiran latọna jijin ninu LAN rẹ, ṣiṣe aṣẹ ti o wa ni isalẹ lori iyara ebute ebute rẹ:

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

Nibi, aṣayan -d n ṣiṣẹ ni ubuntu-apache apoti ni abẹlẹ (bi daemon) ati aṣayan -p awọn maapu ibudo apoti 80 si ibudo agbegbe ti agbegbe rẹ 81. Iwọle LAN ti ita si iṣẹ Apache ni a le de nipasẹ ibudo 81 nikan.

Netstat aṣẹ yoo fun ọ ni imọran nipa kini awọn ibudo ti ogun n tẹtisi.

Lẹhin ti apoti eiyan ti bẹrẹ, o tun le ṣiṣẹ docker ps aṣẹ lati wo ipo ti apoti ti nṣiṣẹ.

6. Oju-iwe wẹẹbu naa le ṣe afihan lori agbalejo rẹ lati laini aṣẹ pẹlu lilo iwuwọ ọmọ-ọwọ si Adirẹsi IP ẹrọ rẹ, localhost, tabi doft net interface lori ibudo 81. Lo laini aṣẹ IP lati ṣe afihan awọn adirẹsi IP nẹtiwọọki.

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

7. Lati ṣabẹwo si oju opo wẹẹbu eiyan lati nẹtiwọọki rẹ, ṣii ẹrọ lilọ kiri lori ayelujara ni ipo latọna jijin ki o lo ilana HTTP, Adirẹsi IP ti ẹrọ nibiti apoti naa ti n ṣiṣẹ, tẹle pẹlu ibudo 81 bi a ti ṣe apejuwe lori aworan isalẹ.

http://ip-address:81

8. Lati gba inu kini awọn ilana wo ni o ṣiṣẹ inu apo eiyan naa aṣẹ wọnyi:

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

9. Lati da oro eiyan duro iduro docker pipaṣẹ atẹle ID apoti tabi orukọ.

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

10. Ni ọran ti o fẹ fi orukọ apejuwe kan fun eiyan naa lo aṣayan --name bi o ṣe han ninu apẹẹrẹ isalẹ:

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

Bayi o le tọka apo eiyan fun ifọwọyi (bẹrẹ, da, oke, awọn iṣiro, ati bẹbẹ lọ) nikan nipa lilo orukọ ti a yàn.

# docker stats my-www

Igbesẹ 3: Ṣẹda Faili Iṣeto-jakejado-Eto fun Apoti Docker

11. Lori CentOS/RHEL o le ṣẹda faili iṣeto eto kan ati ṣakoso apo eiyan bi o ṣe deede fun eyikeyi iṣẹ agbegbe miiran.

Fun apeere, ṣẹda faili eto tuntun ti a npè ni, jẹ ki a sọ, apache-docker.service lilo pipaṣẹ wọnyi:

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

faili apache-docker.service ti yọ:

[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. Lẹhin ti o pari ṣiṣatunkọ faili naa, pa a, tun gbee daemon ti eto lati ṣe afihan awọn ayipada ati bẹrẹ apoti nipasẹ fifun awọn ofin wọnyi:

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

Eyi jẹ apẹẹrẹ ti o rọrun ti ohun ti o le ṣe pẹlu Dockerfile ti o rọrun ṣugbọn o le kọ-kọ diẹ ninu awọn ohun elo ti o ni imọran ti o le ṣe ina-soke ni ọrọ kan ti awọn aaya pẹlu awọn orisun kekere ati igbiyanju.

Siwaju sii kika: