V tomto stručném průvodci vám stručně představím Dockerfile a naučí vás, jak jej používat k automatizaci procesu vytváření vlastních obrazů dockerů. Dockerfile není nic jiného než jednoduchý textový soubor s pokyny k vytvoření obrazu dockeru. Obsahuje všechny příkazy, které by uživatel mohl volat na příkazovém řádku, aby vytvořil obrázek. Dockerfile můžeme použít k vytvoření vlastních vlastních obrázků. Tyto vlastní obrázky Dockeru pak můžeme sdílet prostřednictvím Docker Hub . Pro ty, kteří by se zajímali, Docker Hub je hostovaná služba úložiště poskytovaná společností Docker pro vyhledávání a sdílení obrázků kontejnerů s vaším týmem a samozřejmě s kýmkoli na světě.
Představte si tento scénář. Dříve, pokud chceme použít Jenkins , pak musíme nainstalovat Jenkins se spoustou kroků. Díky Dockerhubu si nyní můžeme stáhnout a spustit předpřipravený obraz kontejneru Jenkinse během několika minut.

Obrázek kontejneru Jenkins v dockerhub
Chcete-li stáhnout Jenkinsův obrázek z DockerHubu, spusťte:
# docker pull Jenkins
Jakmile vytáhneme obrázky dockeru, můžeme je použít spuštěním obrázku pomocí příkazu:
# docker run -it -d -p 8080:8080 jenkins
Je to tak jednoduché!
Chcete-li se dozvědět více o používání Dockeru, prostudujte si následující příručku.
- Začínáme s Dockerem
V Dockerhubu je k dispozici více než 100 000 obrázků kontejnerů od dodavatelů softwaru, open-source projektů a komunity. Můžete vyhledat a stáhnout libovolný obrázek kontejneru podle vašeho výběru z Dockerhubu a okamžitě jej začít používat, jak je uvedeno výše.
Porozumění formátu souboru Docker
Docker může vytvářet obrázky automaticky podle pokynů z Dockerfile.
Typický soubor Dockerfile obsahuje následující pokyny:
1. OD - Nastaví základní obrázek kontejneru.
Příklad:
FROM ubuntu:18.04
Nastaví základní obrázek kontejneru jako Ubuntu. Pokud tag 18.04 není zadán, bude tag považován za „nejnovější“.
2. ŠTÍTEK - Jedná se o pár klíč-hodnota používaný ke specifikaci metadatových informací obrázku.
Příklad:
LABEL ENV=”DEVELOPMENT”
3. SPUSTIT - Slouží k provedení příkazu na základním obrázku a vytvoří novou vrstvu.
Příklad:
RUN apt-get update RUN apt-get install tomcat
4. CMD - Používá se k nastavení příkazu, který se má provést jako první při spuštění kontejneru.
Příklad:
CMD [“java”, “-jar”, “app.jar”]
5. VYSTAVIT - Zpřístupní port pro přístup ke kontejneru. Kontejner bude naslouchat na tomto síťovém portu. Můžeme přistupovat
výstup pomocí tohoto portu.
Příklad:
EXPOSE 8080
6. ÚDRŽBA - Uvede podrobnosti o autorovi, který vytvořil tento obrázek Docker.
Příklad:
MAINTAINER [email protected]
7. ENV - Používá se k nastavení proměnných prostředí v páru klíč-hodnota. Tyto proměnné se nastavují během vytváření obrazu
a jsou dostupné po vytvoření kontejneru.
Příklad:
ENV DB_NAME=”MySQL” ENV DB_VERSION=”8.0”
8. KOPÍROVAT - Používá se ke kopírování místních souborů do kontejneru.
Příklad:
COPY /target/devops.jar devops.jar
9. PŘIDAT - Funguje to stejně jako kopírování, ale má další funkce, například můžeme extrahovat místní tar a přidat vzdálenou adresu URL.
Příklad:
ADD devops.tar.xz / . ADD http://example.com/abc.git /usr/local/devops/
10. VSTUPNÍ BOD - Slouží k nastavení hlavního příkazu pro obrázek. Funguje stejně jako instrukce CMD. The
jediný rozdíl mezi CMD a ENTRYPOINT je v tom, že instrukce nejsou přepsány v ENTRYPOINT.
Příklad:
ENTRYPOINT [“java”, “-jar”, “app.jar”]
11. OBJEM - Vytvoří přípojný bod se zadaným názvem.
Příklad:
VOLUME /app/devops
12. UŽIVATEL - Nastaví uživatelské jméno a uživatelskou skupinu, které se mají použít při spouštění obrazu.
Příklad:
USER dhruv USER admin
13. WORKDIR - Nastaví pracovní adresář. Pokud není přítomen, vytvoří adresář.
Příklad:
WORKDIR /var/lib/
Zde je ukázkový soubor Dockerfile pro vaši referenci.
FROM ubuntu:latest MAINTAINER Dhruv Tiwari "[email protected]" RUN apt-get install -y software-properties-common python RUN add-apt-repository ppa:chris-lea/node.js RUN echo "deb http://us.archive.ubuntu.com/ubuntu/ precise universe" >> /etc/apt/sources.list RUN apt-get update RUN apt-get install -y nodejs RUN mkdir /var/www ADD app.js /var/www/app.js CMD ["/usr/bin/node", "/var/www/app.js"]
Dovolte mi ukázat vám jednoduchý příklad vytvoření ukázkového souboru Dockerfile a vytvoření obrázku pomocí něj.
Vytvoření Dockerfile
Vytvořte soubor s názvem Dockerfile , přidejte obsah do souborů. V následujícím příkladu aktualizujeme a instalujeme vim a vlnit .
# cat dockerfile
FROM alpine RUN apk update RUN apk add vim RUN apk add curl

dockerfile pro alpine
Nyní máme soubor Dockerfile na svém místě. Pojďme do toho a vytvořte obrázek pomocí Dockerfile.
Vytvořte obrázek pomocí Dockerfile
Chcete-li vytvořit obrázek z Dockerfile, jednoduše spusťte:
# docker build -t devops .
Pozor na tečku (.) na konci.
Podle výše uvedeného příkazu začne Docker automaticky vytvářet obrázky přečtením pokynů ze Dockerfile uloženy v aktuálním pracovním adresáři.
Pokud je Dockerfile uložen někde jinde, můžete zmínit jeho cestu pomocí -f příznak jako níže.
# docker build -f /path/to/a/Dockerfile .
Po vytvoření obrázku jej můžeme spustit příkazem:
# docker run -it devops
Takto lze vytvořit vlastní obrázky kontejneru pomocí Dockerfile. Snad to pomůže. Probrali jsme jen základy. S Dockerfile můžete dělat mnohem víc. Doporučuji vám odkázat na oficiální referenční informace o Dockerfile průvodce, kde se o něm dozvíte více.
Doporučené čtení:
- Vysvětlení pojmů Docker Networking
- Vysvětlení svazků Docker s příklady
- Jak automaticky aktualizovat spuštěné kontejnery Docker
- ctop – nástroj pro monitorování příkazového řádku pro linuxové kontejnery
- Portainer – nejsnazší způsob správy Dockeru
- PiCluster – jednoduchá webová aplikace pro správu dockerů
- Dockly – Správa kontejnerů Docker z terminálu
O autorovi:
Dhruv Tiwari je DevOps Engineer, který miluje automatizaci věcí, práci s Linuxem ve velkém a sní o dni, kdy budou systémy dostatečně chytré, aby se nikdy nemusely přihlašovat k linuxovému boxu. Cesta CI/CD od zdrojového kódu přes nasazení kódu až po produkci.