Android

Jak vytvořit docker obrázky pomocí dockerfile

Pros and cons of stable and unique tags in Docker image tagging | Azure Friday

Pros and cons of stable and unique tags in Docker image tagging | Azure Friday

Obsah:

Anonim

Obrázek Docker je plán kontejnerů Docker, který obsahuje aplikaci a vše, co potřebujete ke spuštění aplikace. Kontejner je runtime instance obrázku.

V tomto tutoriálu si vysvětlíme, co je Dockerfile, jak jej vytvořit a jak vytvořit Docker image pomocí Dockerfile.

Co je Dockerfile

Dockerfile je textový soubor, který obsahuje všechny příkazy, které by uživatel mohl spustit na příkazovém řádku k vytvoření obrázku. Obsahuje všechny pokyny, které Docker potřebuje k vytvoření obrazu.

Obrázky Docker jsou tvořeny řadou vrstev souborových systémů představujících pokyny v Dockerfile obrazu, který tvoří spustitelnou softwarovou aplikaci.

Soubor Docker má následující podobu:

# Comment INSTRUCTION arguments

INSTRUCTION nerozlišuje velká a malá písmena, ale konvencí je používat UPPERCASE pro její názvy.

Níže je seznam s krátkým popisem některých nejpoužívanějších pokynů Dockerfile:

  • ARG - Tato instrukce umožňuje definovat proměnné, které mohou být předávány v době sestavení. Můžete také nastavit výchozí hodnotu. FROM - Základní obrázek pro vytvoření nového obrazu. Tato instrukce musí být první instrukcí bez komentáře v Dockerfile. Jedinou výjimkou z tohoto pravidla je situace, kdy chcete použít proměnnou v argumentu FROM . V takovém případě může FROM předcházet jeden nebo více instrukcí ARG . LABEL - Používá se k přidání metadat do obrázku, jako je popis, verze, autor..etc. Můžete zadat více než jeden LABEL a každá instrukce LABEL je pár klíč-hodnota. RUN - Příkazy uvedené v této instrukci budou provedeny během procesu sestavení. Každá instrukce RUN vytvoří novou vrstvu v horní části aktuálního obrázku. PŘIDAT - Používá se pro kopírování souborů a adresářů ze zadaného zdroje do zadaného cíle v obrazu ukotvitelného. Zdrojem mohou být místní soubory nebo adresáře nebo URL. Pokud je zdrojem lokální dechtový archiv, je automaticky vybalen do obrazu Docker. KOPIE - Podobné jako ADD ale zdrojem může být pouze místní soubor nebo adresář. ENV - Tato instrukce umožňuje definovat proměnnou prostředí. CMD - Používá se k určení příkazu, který bude proveden při spuštění kontejneru. V Dockerfile můžete použít pouze jednu instrukci CMD . ENTRYPOINT - Podobně jako CMD tato instrukce definuje, jaký příkaz bude proveden při spuštění kontejneru. WORKDIR - Tato směrnice nastavuje aktuální pracovní adresář pro instrukce RUN , CMD , ENTRYPOINT , COPY a ADD . UŽIVATEL - Nastavte uživatelské jméno nebo UID mají použít při spuštění následujících pokynů RUN , CMD , ENTRYPOINT , COPY a ADD . VOLUME - Umožňuje připojit adresář hostitelského počítače k ​​kontejneru. EXPOZICE - Slouží k určení portu, na kterém kontejner poslouchá za běhu.

Chcete-li vyloučit přidání souborů a adresářů do obrázku, vytvořte soubor .dockerignore v kontextovém adresáři. Syntaxe .dockerignore je podobná syntaxi souboru Git's .gitignore .

Úplný odkaz a podrobné vysvětlení pokynů Dockerfile viz oficiální referenční stránka Dockerfile.

Vytvořte soubor Dockerfile

Nejběžnějším scénářem při vytváření obrázků Docker je vytáhnout existující obraz z registru (obvykle z Docker Hubu) a určit změny, které chcete provést na základním obrazu. Nejčastěji používaným základním obrazem při vytváření obrázků Docker je Alpine, protože je malý a optimalizovaný pro běh v RAM.

Docker Hub je cloudová registrační služba, která se mimo jiné používá k uchovávání obrázků Docker ve veřejném nebo soukromém úložišti.

V tomto příkladu vytvoříme obrázek Docker pro server Redis. Jako základní obrázek použijeme nejnovější ubuntu 18.04.

Nejprve vytvořte adresář, který bude obsahovat soubor Dockerfile a všechny potřebné soubory:

mkdir ~/redis_docker

Přejděte do adresáře a vytvořte následující soubor Dockerfile:

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

Pojďme vysvětlit význam každé z řádek v Dockerfile:

  • V řádku 1 definujeme základní obraz. Instrukce RUN která začíná v řádku 3 , aktualizuje index apt, nainstaluje balíček „redis-server“ a vyčistí mezipaměť apt. Příkazy použité v pokynech jsou stejné jako příkazy, které byste použili k instalaci redis na serveru Ubuntu. Instrukce EXPOSE definuje port, na kterém server redis poslouchá. Na posledním řádku pomocí příkazu CMD nastavíme výchozí příkaz. to bude provedeno při spuštění kontejneru.

Uložte soubor a zavřete editor.

Budování obrazu

Dalším krokem je vytvoření obrázku. Chcete-li tak učinit, spusťte z adresáře, kde je umístěn soubor Dockerfile, následující příkaz:

docker build -t linuxize/redis.

Možnost -t určuje jméno obrázku a případně uživatelské jméno a značku ve formátu 'username / imagename: tag'.

Výstup procesu sestavení bude vypadat asi takto:

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

Po dokončení procesu sestavení bude nový obrázek uveden v seznamu obrázků:

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

Provozování kontejneru

Po vytvoření obrázku spustíte z něj kontejner spuštěním:

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

Volby -d sdělují Dockerovi, aby spustil kontejner v odpojeném režimu, volba -p 6379:6379 publikuje port 6379 v hostitelském počítači a volba --name redis určuje název kontejneru. Posledním argumentem linuxize/redis je název obrázku, který se používá ke spuštění kontejneru.

Po spuštění kontejneru použijte následující příkaz k zobrazení všech spuštěných kontejnerů:

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

Chcete-li ověřit, že všechno funguje tak, jak má, použijte k připojení kontejnerového redis-cli :

redis-cli ping

Server redis by měl odpovědět PONG .

Závěr

Tento tutoriál se týkal pouze základních principů použití Dockerfiles k vytváření obrázků. Chcete-li se dozvědět více o tom, jak psát Dockerfiles a doporučené doporučené postupy, přečtěte si Osvědčené postupy pro psaní Dockerfiles.

přístavní dělník