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é:
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
MAINTAINER
=Autor obrázku sestaveníRUN
=Tuto instrukci lze použít na více řádcích a spustí jakékoli příkazy po vytvoření obrazu Docker.CMD
=Spustit libovolný příkaz při spuštění obrazu Docker. Použijte pouze jednu CMD instrukci v Dockerfile.ENTRYPOINT
=Stejné jako CMD, ale používá se jako hlavní příkaz pro obrázek.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.ENV
=Nastavení proměnných prostředí kontejneru.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