GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak automaticky vytvářet a konfigurovat vlastní obrázky dockeru pomocí Dockerfile – část 3

Tento tutoriál se zaměří na to, jak vytvořit vlastní image Dockeru na základě Ubuntu s Apache služba nainstalována. Celý proces bude automatizován pomocí Dockerfile .

Obrázky Docker lze automaticky sestavit z textových souborů s názvem Dockerfiles . Soubor Dockeru obsahuje podrobné pokyny nebo příkazy používané k vytvoření a konfiguraci obrazu Dockeru.

Požadavky

  • Nainstalujte Docker a naučte se manipulaci s kontejnerem Docker – část 1
  • Nasazování a spouštění aplikací v kontejnerech Docker – část 2

V zásadě soubor Docker obsahuje různé pokyny k sestavení a konfiguraci konkrétního kontejneru na základě vašich požadavků. Následující pokyny jsou nejpoužívanější, některé z nich jsou povinné:

  1. FROM =Povinné jako první instrukce v souboru Docker. Instruuje Docker, aby vytáhl základní obraz, ze kterého vytváříte nový obraz. Pomocí značky určete přesný obrázek, ze kterého stavíte:
Ex: FROM ubuntu:20.04
  1. MAINTAINER =Autor obrázku sestavení
  2. RUN =Tuto instrukci lze použít na více řádcích a spustí jakékoli příkazy po vytvoření obrazu Docker.
  3. CMD =Spustit libovolný příkaz při spuštění obrazu Docker. Použijte pouze jednu CMD instrukci v Dockerfile.
  4. ENTRYPOINT =Stejné jako CMD, ale používá se jako hlavní příkaz pro obrázek.
  5. EXPOSE =Instruuje kontejner, aby při spuštění naslouchal na síťových portech. Porty kontejneru nejsou ve výchozím nastavení dostupné z hostitele.
  6. ENV =Nastavení proměnných prostředí kontejneru.
  7. ADD =Kopírovat zdroje (soubory, adresáře nebo soubory z adres URL).

Krok 1:Vytvoření nebo zápis úložiště Dockerfile

1. Nejprve si vytvořte nějaký Dockerfile úložiště, aby bylo možné soubory v budoucnu znovu použít k vytváření dalších obrázků. Někde v /var vytvořte prázdný adresář oddíl, kde vytvoříme soubor s pokyny, které budou použity k vytvoření nového obrazu Docker.

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

2. Dále začněte upravovat soubor podle následujících pokynů:

# vi /var/docker/ubuntu/apache/Dockerfile

Výňatek z Dokerfile:

FROM ubuntu
MAINTAINER  your_name  <[email protected]>
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

Nyní si projdeme pokyny k souboru:

První řádek nám říká, že stavíme z Ubuntu obraz. Pokud není odeslán žádný štítek, řekněte 14:10 například nejnovější obrázek z Docker Hub se používá.

Na druhý řádek jsme přidali jméno a e-mail tvůrce obrazu. Další dva RUN řádky budou spuštěny v kontejneru při vytváření obrazu a nainstalují Apache démon a echo nějaký text do výchozí webové stránky Apache.

EXPOSE řádek dá pokyn Dockeru kontejner pro poslech na portu 80 , ale port nebude dostupný zvenčí. Poslední řádek dává kontejneru pokyn, aby po spuštění kontejneru spustil službu Apache v popředí.

3. Poslední věc, kterou musíme udělat, je začít vytvářet obrázek zadáním níže uvedeného příkazu, který lokálně vytvoří nový obrázek Docker s názvem ubuntu-apache na základě dříve vytvořeného Dockerfile, jak je znázorněno v tomto příkladu:

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

4. Po vytvoření obrázku pomocí Dockeru , můžete vypsat všechny dostupné obrázky a identifikovat svůj obrázek zadáním následujícího příkazu:

# docker images

Krok 2:Spusťte kontejner a přistupujte k Apache z LAN

5. Chcete-li kontejner spouštět nepřetržitě (na pozadí) a přistupovat ke službám (portům) vystaveným kontejneru z hostitele nebo jiného vzdáleného počítače ve vaší síti LAN, spusťte na příkazovém řádku hostitelského terminálu následující příkaz:

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

Zde je -d volba spustí ubuntu-apache kontejner na pozadí (jako démon) a -p možnost mapuje port kontejneru 80 na váš localhost port 81 . Přístup ke službě Apache mimo síť LAN je možný přes port 81 pouze.

Příkaz Netstat vám dá představu o tom, jaké porty hostitel poslouchá.

Po spuštění kontejneru můžete také spustit docker ps příkaz pro zobrazení stavu spuštěného kontejneru.

6. Webovou stránku lze na vašem hostiteli zobrazit z příkazového řádku pomocí curl nástroj proti IP adrese vašeho počítače, místnímu hostiteli nebo síťovému rozhraní dockeru na portu 81. Pomocí příkazového řádku IP zobrazte adresy IP síťového rozhraní.

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

7. Chcete-li navštívit webovou stránku kontejneru ze své sítě, otevřete prohlížeč na vzdáleném místě a použijte protokol HTTP, IP adresu počítače, na kterém kontejner běží, následovanou portem 81, jak je znázorněno na obrázku níže.

http://ip-address:81

8. Chcete-li získat informace o tom, jaké procesy běží uvnitř kontejneru, zadejte následující příkaz:

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

9. Chcete-li zastavit problém s kontejnerem, docker stop příkaz následovaný ID nebo názvem kontejneru.

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

10. V případě, že chcete kontejneru přiřadit popisný název, použijte --name možnost, jak je znázorněno v níže uvedeném příkladu:

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

Nyní můžete odkazovat na kontejner pro manipulaci (start, stop, top, statistiky atd.) pouze pomocí přiřazeného názvu.

# docker stats my-www

Krok 3:Vytvořte systémový konfigurační soubor pro kontejner Docker

11. V systému CentOS/RHEL můžete vytvořit systemd konfigurační soubor a spravujte kontejner jako obvykle pro jakoukoli jinou místní službu.

Vytvořte například nový soubor systemd s názvem, řekněme, apache-docker.service pomocí následujícího příkazu:

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

apache-docker.service úryvek ze souboru:

[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. Po dokončení úprav souboru jej zavřete, znovu načtěte démona systemd, aby odrážel změny, a spusťte kontejner zadáním následujících příkazů:

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

Toto byl jen jednoduchý příklad toho, co můžete dělat s jednoduchým Dockerfile ale můžete si předem sestavit některé docela sofistikované aplikace, které můžete spustit během několika sekund s minimálními prostředky a úsilím.

Další čtení:

Část 4 :Jak monitorovat Docker kontejnery v Linuxu
Docker
  1. Jak používat obrázky, kontejnery a soubory Docker do hloubky

  2. Jak zabalit a přenést obrazy Dockeru z jednoho serveru na druhý

  3. Jak sdílet obrázky Docker s ostatními

  1. Jak použít Dockerfile k vytvoření Docker Image

  2. Jak upravit obrázky Docker

  3. Jak vytvořit Docker Image z kontejneru a Dockerfile

  1. Jak vytvořit Docker Image pomocí Dockerfile

  2. Jak vytvořit Docker Images pomocí Dockerfile na Ubuntu 16.04 LTS

  3. Docker:Jak jej používat v praxi - Část 3