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
výchozí context pro docker lze upravit takto:
hanz@linux:~$ docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ERROR
default Current DOCKER_HOST based configuration unix:///var/run/docker.sock
desktop-linux * Docker Desktop unix:///home/hanz/.docker/desktop/docker.sock
hanz@linux:~$ docker context use default
default
Current context is now "default"
hanz@linux:~$ sudo systemctl restart docker
hanz@linux:~$ docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ERROR
default * Current DOCKER_HOST based configuration unix:///var/run/docker.sock
desktop-linux Docker Desktop
udelal jsem v dockeru zmenu v php v dockerfile z php 8.0 na php 8.2 a kdyz dam docker compose up, tak se zmena neprojevila, co s tim?? Nejaky prikaz na update? diky
po změně dockerfile musíš udělat rebuild, takto:
docker compose build --no-cache
pouzivam docker a v nem php bezici na apache webserveru. potrebuji, aby si webserver myslel, ze je vcerejesi den. potrebuji nasimulovat vcerejsi stav. jak na to?
diky
datum pro webserver v docker kontejneru upravit lze, delam to takto:
docker run --cap-add=SYS_TIME -it d1345161616ef bash
Uvnitř kontejneru pak nastavíš čas třeba pomocí:
date -s "- 1day"
PS: Ten cas tam bude jen chvili, nez to zase system prepise na aktualni, tak jednej rychle...
date -s "2025-10-31 13:50:00" date: cannot set date: Operation not permitted Fri Oct 31 13:50:00 UTC 2025
Tak to je právy a je třeba spustit kontejner přes:
docker run --cap-add=SYS_TIME -it web bash
Lepší je ale rovnou ke kontejneru do docker-compose dát:
cap_add:
- SYS_TIME
Pak to bude fungovat vždy.