Docker je rozšiřitelný open-source engine poháněný Linuxovými kontejnery, který automatizuje nasazení aplikací jako přenosné, lehké a soběstačné kontejnery. Pro účely tohoto tutoriálu budeme předpokládat, že jste postupovali podle kroků uvedených v našem Nastavení a zabezpečení výpočetní instance, že váš systém je aktuální a že jste se k Linode přihlásili jako root přes SSH.
Instalace
Pro účely této příručky vám ukážeme, jak nainstalovat Docker na Ubuntu 12.04 i CentOS 6.4 Docker poskytuje úložiště pro každou z těchto distribucí, což usnadňuje instalaci.
Ubuntu 12.04 64bit
Zde přidáme úložiště spravované Dockerem pro Ubuntu a nainstalujeme software.
-
Docker je k dispozici jako balíček v repozitářích Docker’s Ubuntu, ale pouze pro 64bit. Nejprve budete muset přidat klíč úložiště Docker pomocí
apt-key
:sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
-
Přidejte úložiště Docker do svých zdrojů apt:
echo "deb http://get.docker.io/ubuntu docker main" | sudo tee /etc/apt/sources.list.d/docker.list
-
Spusťte následující pro aktualizaci apt-get a instalaci
lxc-docker
:sudo apt-get update sudo apt-get install lxc-docker
-
Chcete-li ověřit, zda byla instalace úspěšně dokončena, spusťte příklad kontejneru Ubuntu. Tento příkaz automaticky vezme všechny chybějící obrázky, spustí kontejner a poskytne interaktivní bash session:
sudo docker run -i -t ubuntu /bin/bash
Výstup by měl vypadat takto:
# docker run -i -t ubuntu /bin/bash Unable to find image 'ubuntu' (tag: latest) locally Pulling repository ubuntu 8dbd9e392a96: Download complete b750fe79269d: Download complete 27cf78414709: Download complete [email protected]:/#
-
Chcete-li kontejner opustit, zadejte
exit
.
CentOS 6 64bit
Docker je dostupný v úložišti EPEL jako docker-io
balíček pouze pro 64bit.
-
Chcete-li přidat úložiště EPEL, nainstalujte nejnovější balíček epel-release.
-
Chcete-li nainstalovat Docker, spusťte následující příkaz:
sudo yum -y install docker-io
-
Chcete-li spustit démona Docker, vyvolejte
service
:sudo service docker start
-
Pokud chcete, aby se démon Docker spustil při bootování, zadejte následující příkaz:
sudo chkconfig docker on
-
Chcete-li ověřit, že instalace proběhla úspěšně, spusťte příklad kontejneru Fedory. Tento příkaz automaticky vezme všechny chybějící obrázky, spustí kontejner a poskytne interaktivní bash session:
sudo docker run -i -t fedora /bin/bash
-
Chcete-li kontejner opustit, zadejte
exit
.
Co mohu dělat s Dockerem?
Docker umožňuje uživatelům zabalit jejich aplikace a konfigurace do odlehčených obrazů pro nasazení jako přenosné kontejnery.
Ahoj světe
Chcete-li spustit kontejner Docker, který vytiskne „hello world“, spusťte následující příkaz:
docker run ubuntu /bin/echo hello world
Mělo by vrátit hello world
.
To říká Dockeru, aby udělal řadu věcí:
- Pokud obrázek (Ubuntu) ještě lokálně neexistuje, stáhněte si ho z indexu Docker.
- Vytvořte nový kontejner se základním obrazem Ubuntu se souborovým systémem pro čtení a zápis a síťovým rozhraním.
- Přidělte kontejneru IP adresu; nastavte NAT pro přesměrování provozu do az kontejneru.
- Spusťte příkaz
/bin/echo hello world
a vytiskněte výstup. - Po dokončení hlavního procesu se kontejner ukončí.
Zápis dockerfile pro Nginx
Při vytváření obrazu se Docker řídí instrukční sadou v souboru s názvem Dockerfile
. Všimněte si, že soubor musí být pojmenován Dockerfile
a všechny soubory nebo složky požadované souborem Dockerfile musí být ve stejném adresáři jako Dockerfile
sám.
Spuštění programu jako echo
v kontejneru Docker je docela jednoduché. U programů, které fungují jako servery, jako je Nginx, však budete muset zajistit, aby byl program nakonfigurován tak, aby se sám démonizoval.
Toto je příklad Dockerfile pro Nginx:
FROM ubuntu:12.04
MAINTAINER Jon Chen "[email protected]"
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
VOLUME /etc/nginx/sites-enabled
VOLUME /var/log/nginx
EXPOSE 80
CMD ["nginx"]
Syntaxe Dockerfile vypadá takto:
# Comment
INSTRUCTION arguments
Docker prochází pokyny Dockerfile shora dolů v daném pořadí. První pokyn musí být FROM
, který určuje základní obrázek, ze kterého chcete vytvořit nový obrázek:
FROM ubuntu:12.04
Tím se nastaví oficiální obrázek Ubuntu 12.04 jako základní obrázek. K definování autora obrázku budete také chtít použít instrukci MAINTENER:
MAINTAINER Jon Chen "[email protected]"
Dále RUN
instrukce provede příkazy na obrázku a potvrdí výsledky. Každé potvrzení se uloží a použije pro další instrukci. Například toto RUN
řádek nahrazuje obsah /etc/apt/sources.list
na obrázku s deb http://archive.ubuntu.com/ubuntu precise main universe
:
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
U programů, jako je Nginx, je důležité pamatovat na to, abyste zajistili, že program neběží jako démon. Výchozí chování Nginxu jako démona je oddělit pracovní procesy a poté opustit hlavní proces. Protože Docker sleduje pouze PID pro původní proces, kontejner se místo trvalého běhu předčasně zastaví. Chcete-li deaktivovat démonizaci, přidejte konfigurační direktivu daemon off do /etc/nginx/nginx.conf
:
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
Chcete-li vystavit port uvnitř kontejneru vnějšku kontejneru, použijte instrukci EXPOSE:
EXPOSE 80
Instrukce CMD definuje výchozí příkaz, který se má spustit při spuštění kontejneru. V našem příkladu chceme spustit Nginx:
CMD ["nginx"]
Ve výchozím nastavení kontejnery Docker nemají trvalé úložiště. Chcete-li sdílet data mezi kontejnery, použijte funkci VOLUME:
VOLUME /etc/nginx/sites-enabled
VOLUME /var/log/nginx
Chcete-li připojit adresář z hostitele do kontejneru, budete muset při spuštění kontejneru zadat hostitelský adresář, odpovídající adresář kontejneru a oprávnění k adresáři na příkazovém řádku:
-v=[]: Create a bind mount with: [host-dir]:[container-dir]:[rw|ro].
If "host-dir" is missing, then docker creates a new volume.
Chcete-li vytvořit tento obrázek, spusťte následující příkaz ve stejném adresáři jako Dockerfile. Pomocí -t repo/tag
můžete určit úložiště a značku pro svůj obrázek :
docker build -t bsdlp/nginx .
Spuštěním následujícího příkazu přidejte /etc/nginx/sites-enabled
a /var/log/nginx
jako svazky z hostitele do kontejneru, spusťte kontejner jako démona a vystavte port 80 z kontejneru jako port 80 na hostiteli:
docker run -d -p 80:80 -v /etc/nginx/sites-enabled:/etc/nginx/sites-enabled -v /var/log/nginx:/var/log/nginx bsdlp/nginx
Další informace
Další informace o tomto tématu můžete získat v následujících zdrojích. Přestože jsou poskytovány v naději, že budou užitečné, vezměte prosím na vědomí, že nemůžeme ručit za přesnost nebo aktuálnost externě hostovaných materiálů.
- Příručka Začínáme s Docker
- Docker na GitHubu
- Oficiální index obrázků Docker