docker-example - prosta aplikacja do demonstracji konteneryzacji aplikacji i budowania obrazów
docker-multistage - aplikacja do demonstracji multistage buildów
docker-compose - prosty projekt docker compose i motywacja za narzędziem compose
docker run hello-worlddocker run -p 80:80 nginxdocker run --network=host nginxdocker run -d \
--name mysql \
-p 3306:3306 \
-v mysql_data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=password \
-e MYSQL_DATABASE=db \
-e MYSQL_USER=user \
-e MYSQL_PASSWORD=password \
mysql:8.0Należy wejść do sekcji docker compose
cd docker-composePrzygotowanie plików:
chmod +x docker_compose_* Odpalenie projektu bez compose
./docker_compose_up.shZabicie projektu bez compose
./docker_compose_down.shOdpalenie projektu z compose
docker compose up -dZobaczenie jak idzie naszemu projektowi
docker statsTest service discovery
docker exec -it docker-compose-db-1 sh -c "ip a && ping -c 5 backend"Zabicie projektu z compose
docker compose downDoszczętne ubicie projektu (wraz z danymi)
docker compose down -vBudowa obrazu:
docker build -t <tag> .Uruchamianie obrazu:
docker run [args...] <image-name> [command]Przydatne flagi:
- -d - uruchamianie obrazu w tle
- -e - podawanie envów do kontenera
- --name - własna nazwa kontenera (jeśli nie podamy Docker wymyśli losową)
- --network - w jakiej sieci Dockerowej jest kontener
- -p - mapowanie portów (port-local:port-container, więcej szczegółów)
- --rm - usuwa kontener po jego zatrzymaniu
- --restart - określenie restart policy (no, on-failure, always, unless-stopped)
Reszta tutaj
Na przykład (nazwa żeby ułatwić komendy):
docker run -p 80:80 --name kontener -d nginxLista wszystkich działających kontenerów:
docker psLista wszystkich kontenerów (również niedziałających):
docker ps -aUruchomione kontenerki możemy sobie dowolnie zatrzymywać i uruchamiać:
docker stop kontener
docker start kontenerMożemy wyświetlić logi (oraz podążać za nimi na żywo):
docker logs -f kontenerMożemy "wejść" na działający kontener i sprawdzić, co w trawie piszczy
docker exec -t kontener bashGdy zabawa się skończyła, możemy zatrzymać kontener i go usunąć... lub zmusić działający do usunięcia:
docker rm -f kontener