Giunsa ang Awtomatikong Paghimo ug Pag-configure sa Mga Imahe sa Custom Docker nga adunay Dockerfile - Bahin 3


Kini nga panudlo magkonsentrar kung giunsa paghimo ang usa ka kostumbre nga imahe sa Docker base sa Ubuntu nga adunay naka-install nga serbisyo sa Apache. Ang tibuuk nga proseso mahimong awtomatiko gamit ang usa ka Dockerfile.

Ang mga imahe sa Docker mahimong awtomatiko nga matukod gikan sa mga file sa teksto, nga ginganlag Dockerfiles. Ang usa ka Docker file naglangkob sa sunod-sunod nga gimando nga mga panudlo o mga mando nga gigamit sa paghimo ug pag-configure sa usa ka imahe sa Docker.

  • I-install ang Docker ug Pagkat-on sa Docker Container Manipulation – Bahin 1
  • I-deploy ug Ipadagan ang mga Aplikasyon ubos sa Docker Container – Bahin 2

Sa panguna, ang usa ka Docker file adunay lainlaing mga panudlo aron matukod ug ma-configure ang usa ka piho nga sulud base sa imong mga kinahanglanon. Ang mosunod nga mga instruksyon mao ang labing gigamit, ang uban niini mandatory:

  1. FROM = Mandatory isip unang instruksiyon sa Docker file. Gisugo ang Docker nga ibira ang base nga imahe diin imong gitukod ang bag-ong imahe. Gamit ug tag aron ipiho ang eksaktong hulagway diin ikaw nagtukod:

Ex: FROM ubuntu:20.04

  1. MAINTAINER = Awtor sa build image
  2. RUN = Kini nga instruksyon mahimong gamiton sa daghang linya ug magpadagan sa bisan unsang mga sugo human mabuhat ang Docker nga imahe.
  3. CMD = Pagdalag bisan unsa nga sugo kung ang imahe sa Docker gisugdan. Gamit ug usa lang ka instruksiyon sa CMD sa Dockerfile.
  4. ENTRYPOINT = Parehas sa CMD pero gigamit isip main command para sa imahe.
  5. EXPOSE = Gisugo ang sudlanan sa pagpaminaw sa mga network port kung nagdagan. Ang mga sudlanan nga pantalan dili maabot gikan sa host pinaagi sa default.
  6. ENV = Itakda ang container environment variables.
  7. ADD = Kopyaha ang mga kapanguhaan (mga file, direktoryo, o mga file gikan sa mga URL).

Lakang 1: Paghimo o Pagsulat sa Dockerfile Repository

1. Una, maghimo kita og usa ka matang sa mga repositoryo sa Dockerfile aron magamit pag-usab ang mga file sa umaabot aron makahimo og ubang mga hulagway. Paghimo ug walay sulod nga direktoryo sa usa ka dapit sa /var partition diin atong himoon ang file nga adunay mga instruksiyon nga gamiton sa paghimo sa bag-ong Docker nga imahe.

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

2. Sunod, sugdi ang pag-edit sa file gamit ang mosunod nga mga instruksyon:

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

Dokerfile nga kinutlo:

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

Karon, atong susihon ang mga instruksyon sa file:

Ang una nga linya nagsulti kanamo nga nagtukod kami gikan sa imahe sa Ubuntu. Kung walay tag nga gisumite, isulti ang 14:10 pananglitan, ang pinakabag-o nga imahe gikan sa Docker Hub gigamit.

Sa ikaduhang linya, among gidugang ang ngalan ug email sa tiglalang sa imahe. Ang sunod nga duha ka linya sa RUN ipatuman sa sudlanan kung magtukod sa imahe ug i-install ang Apache daemon ug ipalanog ang pipila ka teksto sa default nga web page sa apache.

Ang linya sa EXPOSE magtudlo sa sudlanan sa Docker nga maminaw sa port 80, apan ang pantalan dili magamit sa gawas. Ang katapusan nga linya nagtudlo sa sudlanan sa pagpadagan sa serbisyo sa Apache sa foreground human masugdan ang sudlanan.

3. Ang katapusan nga butang nga kinahanglan natong buhaton mao ang pagsugod sa paghimo sa imahe pinaagi sa pag-isyu sa ubos nga sugo, nga lokal nga maghimo og usa ka bag-ong Docker nga imahe nga ginganlan ubuntu-apache base sa Dockerfile nga gihimo sa sayo pa, sama sa gipakita sa kini nga pananglitan:

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

4. Human mabuhat ang imahe sa Docker, mahimo nimong ilista ang tanan nga magamit nga mga imahe ug mailhan ang imong imahe pinaagi sa pag-isyu sa mosunod nga mando:

# docker images

Lakang 2: Pagdalagan ang Container ug Pag-access sa Apache gikan sa LAN

5. Aron padayon nga modagan ang sudlanan (sa background) ug ma-access ang container nga naladlad nga mga serbisyo (ports) gikan sa host o uban pang remote machine sa imong LAN, padagana ang ubos nga command sa imong host terminal prompt:

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

Dinhi, ang -d nga opsyon nagpadagan sa ubuntu-apache nga sudlanan sa background (isip usa ka daemon) ug ang -p nga opsyon nag-mapa sa container port 80 sa imong localhost port 81. Gawas sa LAN access sa Apache service mahimong maabot pinaagi sa port 81 lamang.

Ang Netstat command maghatag kanimo ug ideya bahin sa mga port nga gipamati sa host.

Human masugdan ang sudlanan, mahimo usab nimong ipadagan ang docker ps command aron makita ang kahimtang sa nagdagan nga sudlanan.

6. Ang webpage mahimong ipakita sa imong host gikan sa command line gamit ang curl utility batok sa imong makina IP Address, localhost, o docker net interface sa port 81. Gamita ang IP command line aron ipakita ang network interface IP addresses.

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

7. Sa pagbisita sa sudlanan webpage gikan sa imong network, abli sa usa ka browser sa usa ka hilit nga lokasyon ug sa paggamit sa HTTP protocol, ang IP Address sa makina diin ang sudlanan nagdagan, gisundan sa port 81 sama sa gihulagway sa ubos nga hulagway.

http://ip-address:81

8. Aron makuha ang sulod kung unsa nga mga proseso ang nagdagan sa sulod sa sudlanan nga isyu ang mosunud nga mando:

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

9. Aron mahunong ang container issue docker stop command nga gisundan sa container ID o ngalan.

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

10. Sa kaso nga gusto nimong hatagan ug deskriptibong ngalan para sa sudlanan gamita ang --name nga opsyon sama sa gipakita sa ubos nga pananglitan:

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

Karon mahimo nimong i-refer ang sudlanan alang sa pagmaniobra (pagsugod, paghunong, taas, stats, etc) pinaagi lamang sa paggamit sa gi-assign nga ngalan.

# docker stats my-www

Lakang 3: Paghimo usa ka System-wide Configuration File alang sa Docker Container

11. Sa CentOS/RHEL makahimo ka ug systemd configuration file ug modumala sa sudlanan sama sa naandan nimo nga buhaton sa bisan unsang ubang lokal nga serbisyo.

Pananglitan, paghimo og bag-ong systemd file nga ginganlan, ingnon ta, apache-docker.service gamit ang mosunod nga sugo:

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

apache-docker.service file nga kinutlo:

[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. Human nimo mahuman ang pag-edit sa file, isira kini, i-reload ang systemd daemon aron mapakita ang mga pagbag-o ug sugdi ang sudlanan pinaagi sa pag-isyu sa mosunod nga mga sugo:

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

Kini usa lamang ka yano nga panig-ingnan kung unsa ang imong mahimo sa usa ka yano nga Dockerfile apan mahimo nimo nga pre-build ang pipila ka mga medyo sopistikado nga mga aplikasyon nga mahimo nimong masunog sa pipila lang ka segundo nga adunay gamay nga mga kapanguhaan ug paningkamot.

Dugang nga Pagbasa: