Android

Hogyan készítsünk dokkoló képeket a docker fájl segítségével

Docker 11. Taggelés

Docker 11. Taggelés

Tartalomjegyzék:

Anonim

A Docker kép a Docker tárolók terve, amely tartalmazza az alkalmazást és mindent, ami az alkalmazás futtatásához szüksége van. A tároló egy kép futásiidejű példánya.

Ebben az oktatóanyagban elmagyarázzuk, mi a Dockerfile, hogyan lehet azt létrehozni, és hogyan lehet a Docker képet létrehozni a Dockerfile segítségével.

Mi a Dockerfile?

A Dockerfile egy szövegfájl, amely tartalmazza az összes parancsot, amelyet a felhasználó a parancssorban futtathat egy kép létrehozásához. Ez tartalmazza a Docker által a kép létrehozásához szükséges összes utasítást.

A Docker képek egy fájlrendszer rétegek sorozatából állnak, amelyek a kép Docker fájljában található utasításokat tartalmazzák, amely egy futtatható szoftver alkalmazást alkot.

A Docker fájl formája a következő:

# Comment INSTRUCTION arguments

INSTRUCTION nem nagybetű-érzékeny, de a szokásos, ha a nevét UPPERCASE használatával használja.

Az alábbiakban felsoroljuk a leggyakrabban használt Dockerfile utasítások rövid leírását:

  • ARG - Ez az utasítás lehetővé teszi azon változók meghatározását, amelyek átadhatók az építéskor. Beállíthat egy alapértelmezett értéket. FROM - az új kép létrehozásának alapképe. Ennek az utasításnak kell lennie a Dockerfile első kommentelés nélküli utasításának. Az egyetlen kivétel ettől a szabálytól, ha egy változót akar használni a FROM argumentumban. Ebben az esetben a FROM ot egy vagy több ARG utasítás előzheti meg. CÍMKE - Metaadatok hozzáadására szolgál egy képhez, például leírás, verzió, szerző..etc. Egynél több LABEL is megadhat, és minden LABEL utasítás kulcs-érték pár. RUN - Az ebben az utasításban megadott parancsok a végrehajtási folyamat során kerülnek végrehajtásra. Minden RUN utasítás új réteget hoz létre az aktuális kép tetejére. ADD - fájlok és könyvtárak másolására szolgál a megadott forrásból a dokkolóképen a megadott rendeltetési helyre. A forrás lehet helyi fájlok vagy könyvtárak, vagy egy URL. Ha a forrás helyi tar-archívum, akkor automatikusan kicsomagolja a Docker-képbe. MÁSOLÁS - Hasonlóan az ADD de a forrás csak egy helyi fájl vagy könyvtár lehet. ENV - Ez az utasítás lehetővé teszi egy környezeti változó meghatározását. CMD - Olyan parancs megadására szolgál, amelyet egy tároló futtatásakor hajtanak végre. Csak egy CMD utasítást használhat a Dockerfile-ben. ENTRYPOINT - Hasonlóan a CMD , ez az utasítás meghatározza, hogy melyik parancs kerül végrehajtásra egy tároló futtatásakor. WORKDIR - Ez az irányelv beállítja a RUN , CMD , ENTRYPOINT , COPY és ADD utasítások aktuális munkakönyvtárát. FELHASZNÁLÓ - Állítsa be a felhasználónevet vagy az UID , amelyet a RUN , CMD , ENTRYPOINT , COPY és ADD utasítások futtatásakor használ. VOLUME - lehetővé teszi, hogy a gazdagép könyvtárat csatolja a tárolóhoz. EXPOSE - Annak a portnak a megadására szolgál, amelyen a tároló figyeli a futási időt.

Ahhoz, hogy kizárja a fájlokat és könyvtárakat a képhez való hozzáadásáról, hozzon létre egy .dockerignore fájlt a helyi könyvtárban. A .dockerignore szintaxisa hasonló a Git .gitignore .

A Dockerfile útmutatásainak teljes leírását és részletes magyarázatát a hivatalos Dockerfile referenciaoldalon találja.

Hozzon létre egy Docker-fájlt

A leggyakoribb forgatókönyv Docker képek létrehozásakor, ha egy meglévő képet húznak egy rendszerleíró adatbázisból (általában a Docker Hub-ból), és megadják az alapképen elvégzendő módosításokat. A Docker képek létrehozásakor a leggyakrabban használt alapkép az Alpine, mivel kicsi és optimalizált RAM-ban való futtatáshoz.

A Docker Hub felhőalapú nyilvántartási szolgáltatás, amelyet többek között a Docker képek nyilvános vagy magántulajdonban történő tárolásához használnak.

Ebben a példában létrehozunk egy Docker képet a Redis szerverhez. Alapképként a legújabb ubuntu 18.04-et fogjuk használni.

Először hozzon létre egy könyvtárat, amely tartalmazza a Dockerfile fájlt és az összes szükséges fájlt:

mkdir ~/redis_docker

Keresse meg a könyvtárat, és hozza létre a következő Dockerfile-t:

cd ~/redis_docker nano Dockerfile Dockerfile

FROM ubuntu:18.04 RUN apt-get update && \ apt-get install -y redis-server && \ apt-get clean EXPOSE 6379 CMD

Magyarázza el a Dockerfile minden sorának jelentését:

  • Az 1 sorban az alapképet definiáljuk. A 3 sorban kezdődő RUN utasítás frissíti az apt indexet, telepíti a „redis-server” csomagot és megtisztítja az apt gyorsítótárat. Az utasításokban használt parancsok megegyeznek a redis telepítéséhez az Ubuntu kiszolgálóval használt parancsokkal. Az EXPOSE utasítás meghatározza azt a portot, amelyen az redis kiszolgáló figyel. Az utolsó sorban a CMD utasítást használjuk az alapértelmezett parancs beállításához. amely akkor kerül végrehajtásra, amikor a tároló fut.

Mentse el a fájlt, és zárja be a szerkesztőt.

A kép felépítése

A következő lépés a kép felépítése. Ehhez futtassa a következő parancsot a könyvtárból, ahol a Dockerfile található:

docker build -t linuxize/redis.

A -t opció határozza meg a kép nevét és opcionálisan felhasználónevet és címkét a 'felhasználónév / képnév: címke' formátumban.

Az építkezési folyamat kimenete így néz ki:

Sending build context to Docker daemon 3.584kB Step 1/4: FROM ubuntu:18.04 ---> 7698f282e524 Step 2/4: RUN apt-get update && apt-get install -y gosu redis-server && apt-get clean ---> Running in e80d4dd69263… Removing intermediate container e80d4dd69263 ---> e19fb7653fca Step 3/4: EXPOSE 6379 ---> Running in 8b2a45f457cc Removing intermediate container 8b2a45f457cc ---> 13b92565c201 Step 4/4: CMD ---> Running in a67ec50c7048 Removing intermediate container a67ec50c7048 ---> d8acc14d9b6b Successfully built d8acc14d9b6b Successfully tagged linuxize/redis:latest

Amikor a készítési folyamat befejeződik, az új kép megjelenik a képlistában:

docker image ls

REPOSITORY TAG IMAGE ID CREATED SIZE linuxize/redis latest d8acc14d9b6b 4 minutes ago 100MB ubuntu 18.04 7698f282e524 5 days ago 69.9MB

Konténer futtatása

Most, hogy a kép elkészült, a következőből futtat egy tárolót:

docker run -d -p 6379:6379 --name redis linuxize/redis

A -d beállítások azt mondják a Dockernek, hogy a tárolót elválasztott módban futtassa, a -p 6379:6379 opció közzéteszi a 6379 portot a gazdagépen, és a --name redis opció határozza meg a tároló nevét. A linuxize/redis utolsó argumentuma a kép neve, amelyet a tároló futtatására használunk.

Amikor a tároló elindul, használja a következő parancsot az összes futó tároló felsorolásához:

docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6b7d424cd915 linuxize/redis:v0.0.1 "redis-server '--pro…" 5 minutes ago Up 5 minutes 0.0.0.0:6379->6379/tcp redis

Annak ellenőrzéséhez, hogy minden úgy működik-e, ahogyan a redis-cli kell csatlakoztatni a dokkoló-tárolóhoz:

redis-cli ping

A redis szervernek PONG val kell válaszolnia.

Következtetés

Ez az oktatóanyag csak a Dockerfiles képek készítésének használatának alapjait fedte le. A Dockerfájlok írásáról és az ajánlott bevált gyakorlatokról további információt a Dockerfájlok írásának legjobb gyakorlat című témakörben talál.

dokkmunkás