Weboldal keresés

Egyéni Docker képek automatikus létrehozása és konfigurálása a Dockerfile segítségével – 3. rész


Ez az oktatóanyag arra összpontosít, hogyan hozhat létre egyéni Docker-képet Ubuntu alapján, telepített Apache szolgáltatással. Az egész folyamat egy Dockerfile segítségével automatizálva lesz.

A Docker-képek automatikusan összeállíthatók Dockerfiles nevű szövegfájlokból. A Docker-fájl lépésről lépésre rendezett utasításokat vagy parancsokat tartalmaz a Docker-kép létrehozásához és konfigurálásához.

Követelmények

  • Telepítse a Dockert és tanulja meg a Docker konténerkezelést – 1. rész
  • Alkalmazások telepítése és futtatása a Docker-tárolók alatt – 2. rész

Alapvetően a Docker-fájl különféle utasításokat tartalmaz egy adott tároló létrehozásához és konfigurálásához az Ön igényei szerint. A következő utasítások a leggyakrabban használtak, néhány közülük kötelező:

  1. FROM=Kötelező, mint az első utasítás egy Docker-fájlban. Utasítja a Dockert, hogy húzza ki azt az alapképet, amelyből az új képet készíti. Használjon címkét a pontos kép megadásához, amelyből épít:
Ex: FROM ubuntu:20.04
  1. MAINTAINER=A build kép szerzője
  2. RUN=Ez az utasítás több sorban is használható, és a Docker-kép létrehozása után bármilyen parancsot lefuttat.
  3. CMD=Bármely parancs futtatása a Docker lemezkép indításakor. Csak egy CMD-utasítást használjon egy Docker-fájlban.
  4. ENTRYPOINT=Ugyanaz, mint a CMD, de a kép fő parancsaként használják.
  5. EXPOSE=Utasítja a tárolót, hogy figyeljen a hálózati portokra futás közben. A tárolóportok alapértelmezés szerint nem érhetők el a gazdagéptől.
  6. ENV=Konténer környezeti változók beállítása.
  7. ADD=Erőforrások (fájlok, könyvtárak vagy fájlok URL-ekből) másolása.

1. lépés: Dockerfile Repository létrehozása vagy írása

1. Először is hozzunk létre valamilyen Dockerfile-tárakat, hogy a jövőben újra felhasználhassuk a fájlokat más képek létrehozásához. Hozzon létre egy üres könyvtárat valahol a /var partícióban, ahol létrehozzuk a fájlt az új Docker lemezkép létrehozásához használt utasításokkal.

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

2. Ezután kezdje el a fájl szerkesztését a következő utasítások szerint:

vi /var/docker/ubuntu/apache/Dockerfile

Dokerfile kivonat:

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

Most menjünk végig a fájlra vonatkozó utasításokon:

Az első sor azt mondja, hogy egy Ubuntu képből építünk. Ha nem küld el címkét, például 14:10, akkor a rendszer a Docker Hub legújabb képét használja.

A második sorban hozzáadtuk a kép készítőjének nevét és e-mail-címét. A következő két RUN sort a tárolóban hajtja végre a kép létrehozásakor, és telepíti az Apache démont és visszhang szöveget az alapértelmezett apache weboldalra. .

Az EXPOSE sor utasítja a Docker-tárolót, hogy figyeljen a 80-as porton, de a port nem lesz elérhető kívülállók számára. Az utolsó sor arra utasítja a tárolót, hogy a tároló elindítása után az előtérben futtassa az Apache szolgáltatást.

3. Az utolsó dolog, amit el kell tennünk, hogy elkezdjük a kép létrehozását az alábbi parancs kiadásával, amely helyileg létrehoz egy új Docker-képet ubuntu-apache néven a következő alapján: A korábban létrehozott Dockerfile, amint az ebben a példában látható:

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

4. Miután a Docker létrehozta a képet, listázhatja az összes elérhető képet, és azonosíthatja a képet a következő parancs kiadásával:

docker images

2. lépés: Futtassa a tárolót, és érje el az Apache-t a LAN-ról

5. A tároló folyamatos (háttérben) futtatásához és a tárolónak kitett szolgáltatások (portok) eléréséhez a gazdagépről vagy más távoli gépről a LAN-on, futtassa az alábbi parancsot a gazdagép terminál promptján :

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

Itt a -d opció az ubuntu-apache tárolót futtatja a háttérben (démonként), a -p pedig leképezi a tárolóportot 80 a helyi gazdagép 81-es portjára. A LAN-on kívül az Apache szolgáltatás csak a 81-es porton keresztül érhető el.

A Netstat parancs ötletet ad arról, hogy a gazdagép milyen portokat hallgat.

A tároló elindítása után a docker ps parancs futtatásával megtekintheti a futó tároló állapotát.

6. A weboldal megjeleníthető a gazdagépen a parancssorból a curl segédprogrammal a gép IP-címe, helyi gazdagépe vagy docker net interfésze ellenében a 81-es porton. Használja az IP parancsot. sor a hálózati interfész IP-címeinek megjelenítéséhez.

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

7. A tároló weboldalának hálózatáról való felkereséséhez nyisson meg egy böngészőt egy távoli helyen, és használja a HTTP protokollt, annak a gépnek az IP-címét, amelyen a tároló fut, majd a 81-es portot, ahogy az a kép alatt.

http://ip-address:81

8. A tárolóban futó folyamatok megismeréséhez adja ki a következő parancsot:

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

9. A tároló kiadásának leállítása: docker stop parancs, majd a tároló azonosítója vagy neve.

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

10. Ha leíró nevet szeretne rendelni a tárolóhoz, használja a --name opciót az alábbi példában látható módon:

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

Most már csak a hozzárendelt név használatával hivatkozhat a tárolóra a manipulációhoz (start, stop, top, stats stb.).

docker stats my-www

3. lépés: Hozzon létre egy rendszerszintű konfigurációs fájlt a Docker Container számára

11. A CentOS/RHEL rendszeren létrehozhat egy systemd konfigurációs fájlt, és kezelheti a tárolót, ahogyan más helyi szolgáltatásnál is szokta.

Például hozzon létre egy új systemd fájlt, tegyük fel, hogy apache-docker.service a következő paranccsal:

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

apache-docker.service fájl kivonat:

[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. Miután befejezte a fájl szerkesztését, zárja be, töltse be újra a systemd démont, hogy tükrözze a változásokat, és indítsa el a tárolót a következő parancsok kiadásával:

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

Ez csak egy egyszerű példa volt arra, hogy mit lehet tenni egy egyszerű Dockerfile segítségével, de előre összeállíthat néhány igen kifinomult alkalmazást, amelyeket pillanatok alatt elindíthat minimális erőforrásokkal és erőfeszítéssel.

További olvasnivalók: