Docker - příklady použití - prolinkování kontejnerů, vytvoření vlastního image
Navážeme na předešlý článek o Dockeru a ukážeme si jak prolinkovat kontejnery mezi sebou a jak vytvořil vlastní image.
WORDPRESS
----------------------------------------------------------
Nyní provedeme instalaci Wordpressu a MariaDB do docker kontejnerů, kontejnery spolu prolinkujeme (aby si spolu mohly povídat) a předáme jim mezi sebou přístupy k databázi.
1.) Instalace MariaDB
- nastaví root heslo Tvbd6vbndsD
- vytvoří databázi wordpress
- nastaví název kontejneru wp_db
docker run -e MYSQL_ROOT_PASSWORD=Tvbd6vbndsD -e MYSQL_DATABASE=wordpress --name wp_db -d mariadb:latest
- na konci můžeme specifikovat jiný port např 3810 takto: --port 3810
2.) Instalace Wordpress
- nastaví název kontejneru wordpress
- prolinkuje kontejner s wp_db
- wordpress bude dostupný na portu 8080 (localhost:8080)
- pomocí environmentálních proměnných "-e" dojde k předání přístupů do databáze, takže se při instalaci wp nemusejí zadávat (zkuste si příkaz dát bez nich a uvidíte)
docker run -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=Tvbd6vbndsD --name wordpress --link wp_db:mysql -p 8080:80 -d wordpress
IMAGES
--------------------------------------------------------
Vytvoření vlastního image
1.) Vytvoříme si kontejner např. s ubuntu
docker run -it ubuntu
2.) Uděláme tam nějakou svojí změnu, doinstalujeme tam např. screen
apt install screen
3.) Takto upravený kontejner 31b7303b3a99 si budeme chtít uložit pro budoucí použití do image, takže uděláme commit a tím ho uložíme
docker commit -m "Ubuntu with screen" -a "Hanz" 31b7303b3a99 hanz/ubuntu-screen
4.) Podíváme se, zda je image skutečně uložený
docker images
5.) Pokud nyní kontejner 31b7303b3a99 smažeme, tak ale o naše změny nepřijdeme, protože je máme uložené v image
docker rm 31b7303b3a99
PS: Takový image můžeme dát na Docker Hub a pak ho dále sdílet
Vytvoření kontejneru z našeho image
Z námi uloženého image můžeme vytvořit kontejner a rovnou skočit do bashe
docker run -it hanz/ubuntu-screen
Smazání image
1.) Vypíšeme si všechny image
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hanz/ubuntu-screen latest 6c02030eeda1 3 minutes ago 122MB
mysql latest 4073e6a6f542 7 days ago 530MB
symfony-docker-main-php latest 1eb6e749063e 12 days ago 139MB
wordpress latest 8fec96b2307f 13 days ago 615MB
ubuntu latest 74f2314a03de 2 weeks ago 77.8MB
symfony-docker-main-caddy latest 65df35710ba7 4 weeks ago 48.6MB
hello-world latest feb5d9fea6a5 17 months ago 13.3kB
2.) A chceme smazat image symfony-docker-main-php
docker image rm symfony-docker-main-php
Další příkazy
--------------------------------------------------------
Zobrazit konfiguraci pro kontejner dle ID
---------------------------
docker inspect 3b18fedb6c12
Zobrazit poslední logy pro kontejner s ID 0b4fd60b3508
-----------------------
docker logs --tail all 0b4fd60b3508
Zákázat autostart pro kontejner wordpress
-----------------------
docker update --restart=no wordpress
Jak změnit port u existujícího kontejneru
---------------------------
Změníme port pro kontejner wordpress např. na 8081
docker commit wordpress wordpress2
docker run -p 8081:80 -td wordpress2
Info
-----------------------
docker info
Prostředky
---------------------------
docker stats
Stav služby (démona)
-----------------------
systemctl status docker
Omezeni prostředků pro kontejner
-----------------------
--memory="300m" # 300MB RAM
--memory-swap="300m" #300MB swap
-it --cpus="1.5" #1,5 CPU
používám docker v ubuntu. Chtěl jsem zkusit docker desktop, ale nevyhovuje mi to, takže uninstall. Po restartu však docker nefunguje s chybou:
docker compose up
Cannot connect to the Docker daemon at unix:///home/jirka/.docker/desktop/docker.sock. Is the docker daemon running?
Co s tím? Díky