Kuinka luoda ja määrittää mukautettuja Docker-kuvia automaattisesti Dockerfilen avulla - Osa 3


Tämä opetusohjelma keskittyy mukautetun Docker-kuvan luomiseen Ubuntuun ja Apache-palveluun asennettuna. Koko prosessi automatisoidaan Docker-tiedoston avulla.

Docker-kuvia voidaan rakentaa automaattisesti tekstitiedostoista, joiden nimi on Dockerfiles. Docker-tiedosto sisältää vaiheittaiset ohjeet tai komennot, joita käytetään Docker-kuvan luomiseen ja määrittämiseen.

Vaatimukset

  • Asenna Docker and Learn Docker Container Manipulation – Osa 1
  • Ota käyttöön ja suorita sovelluksia Docker Containersissa – Osa 2

Pohjimmiltaan Docker-tiedosto sisältää erilaisia ohjeita tietyn säilön rakentamiseksi ja määrittämiseksi tarpeidesi mukaan. Seuraavat ohjeet ovat eniten käytettyjä, joista osa on pakollisia:

  1. FROM=Pakollinen Docker-tiedoston ensimmäisenä ohjeena. Kehottaa Dockeria ottamaan peruskuvan, josta olet rakentamassa uutta kuvaa. Käytä tagia määrittääksesi tarkan kuvan, josta rakennat:
Ex: FROM ubuntu:20.04
  1. MAINTAINER=Rakennuskuvan tekijä
  2. RUN=Tätä ohjetta voidaan käyttää useilla riveillä ja se suorittaa kaikki komennot Docker-kuvan luomisen jälkeen.
  3. CMD=Suorita mikä tahansa komento, kun Docker-näköistiedosto käynnistetään. Käytä vain yhtä CMD-ohjetta Docker-tiedostossa.
  4. ENTRYPOINT=Sama kuin CMD, mutta sitä käytetään kuvan pääkäskynä.
  5. EXPOSE=Ohjaa säilöä kuuntelemaan verkkoportteja, kun se on käynnissä. Konttiportit eivät ole oletusarvoisesti tavoitettavissa isännältä.
  6. ENV=Aseta säilön ympäristömuuttujat.
  7. LISÄÄ=Kopioi resurssit (tiedostot, hakemistot tai tiedostot URL-osoitteista).

Vaihe 1: Dockerfile-arkiston luominen tai kirjoittaminen

1. Luodaan ensin jonkinlaisia Dockerfile-tietovarastoja, jotta tiedostoja voidaan käyttää uudelleen muiden kuvien luomiseen. Tee tyhjä hakemisto jonnekin /var-osioon, johon luomme tiedoston ohjeineen, joita käytetään uuden Docker-kuvan rakentamiseen.

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

2. Aloita seuraavaksi tiedoston muokkaaminen seuraavien ohjeiden mukaisesti:

vi /var/docker/ubuntu/apache/Dockerfile

Dokerfile-ote:

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

Käydään nyt tiedostoohjeet läpi:

Ensimmäinen rivi kertoo, että rakennamme Ubuntu-kuvasta. Jos tunnistetta ei lähetetä, esimerkiksi 14:10 käytetään Docker Hubin viimeisintä kuvaa.

Toiselle riville olemme lisänneet kuvan luojan nimen ja sähköpostiosoitteen. Seuraavat kaksi RUN-riviä suoritetaan säilössä, kun kuvaa rakennetaan, ja ne asentavat Apache-daemonin ja echo tekstin apachen oletussivulle. .

EXPOSE-rivi ohjeistaa Dokkerin-konttia kuuntelemaan porttia 80, mutta portti ei ole ulkopuolisten käytettävissä. Viimeinen rivi ohjeistaa säilöä suorittamaan Apache-palvelun etualalla, kun säilö on käynnistetty.

3. Viimeinen asia, joka meidän on tehtävä, on aloittaa kuvan luominen antamalla alla oleva komento, joka luo paikallisesti uuden Docker-kuvan nimeltä ubuntu-apache, joka perustuu Aiemmin luotu Dockerfile, kuten tässä esimerkissä näkyy:

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

4. Kun Docker on luonut kuvan, voit luetella kaikki saatavilla olevat kuvat ja tunnistaa kuvasi antamalla seuraavan komennon:

docker images

Vaihe 2: Suorita Container ja käytä Apachea lähiverkosta

5. Jos haluat käyttää säilöä jatkuvasti (taustalla) ja käyttää säilön paljastettuja palveluita (portteja) isännästä tai muusta lähiverkon etäkoneesta, suorita alla oleva komento isäntäpäätteen kehotteessa :

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

Tässä -d-vaihtoehto ajaa ubuntu-apache-säilöä taustalla (daemonina) ja -p-vaihtoehto kartoittaa konttiportin 80 paikallispalvelinporttiin 81. Lähiverkon ulkopuolella Apache-palveluun pääsee vain portin 81 kautta.

Netstat-komento antaa sinulle käsityksen siitä, mitä portteja isäntä kuuntelee.

Kun säilö on käynnistetty, voit myös suorittaa docker ps -komennon nähdäksesi käynnissä olevan säilön tilan.

6. Verkkosivu voidaan näyttää isännässäsi komentoriviltä käyttämällä curl -apuohjelmaa koneen IP-osoitteen, paikallispalvelimen tai Docker-verkkoliittymän kanssa portissa 81. Käytä IP-komentoa rivi näyttää verkkoliitännän IP-osoitteet.

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

7. Jos haluat vierailla säilön verkkosivulla verkosta, avaa selain etäpaikassa ja käytä HTTP-protokollaa, sen koneen IP-osoitetta, jossa säilö on käynnissä, ja porttia 81, kuten kuvassa näkyy kuvan alla.

http://ip-address:81

8. Saat tietoja säilön sisällä käynnissä olevista prosesseista antamalla seuraava komento:

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

9. Säilön lopettaminen antaa docker stop -komennon, jota seuraa säilön tunnus tai nimi.

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

10. Jos haluat antaa säilölle kuvaavan nimen, käytä --name-vaihtoehtoa alla olevan esimerkin mukaisesti:

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

Nyt voit viitata säilöön käsittelyä varten (aloitus, lopetus, alkuun, tilastot jne.) vain käyttämällä määritettyä nimeä.

docker stats my-www

Vaihe 3: Luo järjestelmän laajuinen määritystiedosto Docker Containerille

11. CentOS/RHEL -palvelussa voit luoda systemd-määritystiedoston ja hallita säilöä kuten tavallisesti minkä tahansa muun paikallisen palvelun kohdalla.

Luo esimerkiksi uusi systemd-tiedosto, jonka nimi on esimerkiksi apache-docker.service seuraavalla komennolla:

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

apache-docker.service-tiedostoote:

[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. Kun olet lopettanut tiedoston muokkaamisen, sulje se, lataa systemd-daemon uudelleen muutosten mukaan ja käynnistä säilö antamalla seuraavat komennot:

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

Tämä oli vain yksinkertainen esimerkki siitä, mitä voit tehdä yksinkertaisella Docker-tiedostolla, mutta voit rakentaa valmiiksi melko kehittyneitä sovelluksia, jotka voit käynnistää muutamassa sekunnissa minimaalisilla resursseilla ja vaivalla.

Lisätietoja: