🢂Docker ‑ Cheatsheet (ściąga)
Ten cheatsheet zawiera krótkie podsumowanie podstawowych pojęć, komend i opcji Dockera. Zawiera również informacje o źródłach dodatkowych informacji.
Docker to platforma do tworzenia, dystrybucji i uruchamiania aplikacji w kontenerach. Kontenery to lekkie, odizolowane środowiska, które zawierają wszystko, czego aplikacja potrzebuje do działania.
Podstawowe pojęcia:
Obraz
: Plik zawierający cały system plików i konfigurację niezbędną do uruchomienia aplikacji.Kontener
: Działająca instancja obrazu.Repozytorium
: Miejsce, gdzie przechowywane są obrazy (np. Docker Hub).Rejestr
: Serwer przechowujący obrazy (np. Docker Hub).Warstwa
: Część obrazu składająca się z plików i instrukcji.
Poniżej wybrane polecenia, które mogą okazać się niezastąpione w codziennej pracy z Dockerem:
Podstawowe komendy:
Instalacja Dockera:
sudo apt-get update
: Aktualizuj listę pakietów.sudo apt-get install docker-ce docker-ce-cli containerd.io
: Instaluj Docker Engine.
Zarządzanie kontenerami:
docker ps [opcje]
: Wyświetl działające kontenery.docker stop [ID_KONTENERA]
: Zatrzymaj działający kontener.docker run [opcje] obraz [polecenie] [argumenty...]
: Uruchom nowy kontener.
Obrazy Dockera:
docker images
: Pokaż wszystkie obrazy.docker pull [nazwa_obrazu]
: Pobierz obraz z Docker Hub.docker rmi [nazwa_obrazu]
: Usuń obraz.
Zarządzanie siecią:
docker network ls
: Wyświetl dostępne sieci.docker network create [nazwa]
: Stwórz nową sieć.
Woluminy i przechowywanie danych:
docker volume create [nazwa]
: Utwórz nowy wolumin.docker volume ls
: Wyświetl dostępne woluminy.
Dockerfile i budowanie obrazów:
docker build -t [nazwa_obrazu]:[tag] .
: Zbuduj obraz z Dockerfile w bieżącym katalogu.
Docker Compose:
docker-compose up
: Uruchom usługi zdefiniowane w pliku docker-compose.yml.docker-compose down
: Zatrzymaj i usuń wszystkie kontenery zdefiniowane w docker-compose.yml.
Logi i monitorowanie:
docker logs [ID_KONTENERA]
: Wyświetl logi kontenera.docker stats
: Wyświetl statystyki zużycia zasobów przez kontenery.
Zaawansowane zarządzanie:
docker exec -it [ID_KONTENERA] bash
: Wejdź do działającego kontenera.docker system prune
: Usuń nieużywane dane Dockera, zwalniając miejsce na dysku.
Interakcja z kontenerem:
docker attach [ID_KONTENERA]
: Podłącz terminal do działającego kontenera.docker cp [ŚCIEŻKA_HOSTA]:[ŚCIEŻKA_KONTENERA]
: Kopiuj pliki/dane między kontenerem a systemem hosta.
Zarządzanie obrazami:
docker buildx build --platform linux/amd64,linux/arm64 -t [nazwa_obrazu]:[tag] .
: Buduj obrazy wieloplatformowe.docker save -o [nazwa_pliku.tar] [nazwa_obrazu]
: Zapisz obraz do pliku TAR.docker load -i [nazwa_pliku.tar]
: Załaduj obraz z pliku TAR.
Zarządzanie kontenerami na poziomie systemu:
docker top [ID_KONTENERA]
: Pokaż procesy działające w kontenerze.docker pause [ID_KONTENERA]
: Wstrzymaj wszystkie procesy w kontenerze.docker unpause [ID_KONTENERA]
: Wznów wszystkie procesy w kontenerze.
Zaawansowane zarządzanie siecią:
docker network connect [nazwa_sieci] [ID_KONTENERA]
: Podłącz kontener do sieci.docker network disconnect [nazwa_sieci] [ID_KONTENERA]
: Odłącz kontener od sieci.
Zarządzanie woluminami:
docker volume inspect [nazwa_woluminu]
: Wyświetl szczegółowe informacje o woluminie.docker volume rm [nazwa_woluminu]
: Usuń wolumin.
Docker Compose zaawansowane:
docker-compose logs [usługa]
: Pokaż logi dla określonej usługi.docker-compose restart [usługa]
: Zrestartuj określoną usługę.
Bezpieczeństwo i zarządzanie:
docker secret create [nazwa_sekretu] [plik_sekretu]
: Utwórz nowy sekret.docker secret ls
: Wyświetl listę sekretów.
Optymalizacja i diagnostyka:
docker system df
: Pokaż zużyte miejsce przez Docker.docker inspect [ID_KONTENERA/OBRAZU]
: Wyświetl niskopoziomowe informacje na temat kontenera/obrazu.
Tagowanie i wersjonowanie obrazów:
docker tag [nazwa_obrazu]:[aktualny_tag] [nazwa_obrazu]:[nowy_tag]
: Oznacz obraz nowym tagiem.
Przykłady
Zdefiniujmy konfigurację Docker Compose dla aplikacji w PHP, Java oraz JavaScript/TypeScript. Poniższe przykłady są zgodne z wersją 3.1 Docker Compose.
PHP
W tym kontenerze uruchomiona zostanie aplikacja PHP z serwerem Apache. Katalog ./php na Twoim komputerze zostanie zamontowany jako katalog roboczy w kontenerze, umożliwiając łatwą modyfikację kodu bez potrzeby przebudowywania obrazu.
version: '3.1'
services:
php-app:
image: php:7.4-apache
volumes:
- ./php:/var/www/html
ports:
- '80:80'
environment:
PHP_INI_DIR: '/usr/local/etc/php'
Java
Kontener dla aplikacji Java używa obrazu openjdk:11. Kod źródłowy aplikacji Java znajduje się w katalogu ./java na Twoim komputerze. Kontener kompiluje i uruchamia aplikację przy pomocy javac i java.
version: '3.1'
services:
node-app:
image: node:14
volumes:
- ./js:/usr/src/app
working_dir: /usr/src/app
command: bash -c "npm install && npm start"
ports:
- '3000:3000'
JavaScript/TypeScript
Dla aplikacji w JavaScript lub TypeScript używany jest obraz node:14. Katalog ./js zawiera kod źródłowy aplikacji i jest zamontowany w kontenerze. Aplikacja jest uruchamiana po zainstalowaniu zależności przez npm install oraz wykonaniu polecenia npm start.
version: '3.1'
services:
node-app:
image: node:14
volumes:
- ./js:/usr/src/app
working_dir: /usr/src/app
command: bash -c "npm install && npm start"
ports:
- '3000:3000'
WordPress , phpmyadmin i MySQL docker-compose.yml
Mapowanie lokalnego folderu do kontenera z WordPress umożliwia łatwą edycję plików WordPress bezpośrednio z poziomu Twojego systemu plików, co jest szczególnie przydatne podczas rozwoju i testowania motywów czy wtyczek.
version: '3.1'
services:
phpmyadmin:
image: phpmyadmin/phpmyadmin
restart: always
environment:
PMA_PORT: 3307 # Ustawienie phpMyAdmin do używania niestandardowego portu
PMA_HOST: mysql
PMA_USER: user
PMA_PASSWORD: password
PMA_ARBITRARY: 1
UPLOAD_LIMIT: 300M
ports:
- '1111:80'
depends_on:
- mysql
mysql:
image: mysql:5.7
restart: always
command: --port=3307 # Tylko przykład, wymaga dostosowania
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: wordpressdb
MYSQL_USER: user
MYSQL_PASSWORD: password
ports:
- '3307:3307'
volumes:
- db:/var/lib/mysql
wordpress:
image: wordpress:latest
restart: always
volumes:
- ./wordpress:/var/www/html
environment:
WORDPRESS_DB_HOST: mysql:3307
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: password
WORDPRESS_DB_NAME: wordpressdb
WORDPRESS_TABLE_PREFIX: wp_163_
WORDPRESS_CONFIG_EXTRA: |
define('DISABLE_WP_CRON', true);
define('WP_ALLOW_MULTISITE', true);
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'localhost:8080');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', true);
depends_on:
- mysql
ports:
- '1112:80'
volumes:
wordpress:
db:
Grafana i docker docker-compose.yml
version: '3.1'
services:
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- '3000:3000'
environment:
GF_SECURITY_ADMIN_USER: 'admin'
GF_SECURITY_ADMIN_PASSWORD: 'strongpassword'
volumes:
- grafana_data:/var/lib/grafana
- grafana_logs:/var/log/grafana
- grafana_config:/etc/grafana
restart: unless-stopped
volumes:
grafana_data:
grafana_logs:
grafana_config:
W tej konfiguracji:
- Service
grafana
: Uruchamia najnowszą wersję Grafana, dostosowując ustawienia takie jak nazwa użytkownika i hasło administratora poprzez zmienne środowiskowe (GF_SECURITY_ADMIN_USER
,GF_SECURITY_ADMIN_PASSWORD
). - Porty: Usługa jest dostępna na porcie
3000
hosta, co umożliwia dostęp do Grafana poprzez przeglądarkę internetową. - Woluminy: Trzy woluminy (
grafana_data
,grafana_logs
,grafana_config
) są używane do trwałego przechowywania danych aplikacji, logów i plików konfiguracyjnych. Dzięki temu konfiguracje i dane nie zostaną utracone przy restartowaniu lub rekreacji kontenera. - Restart: Polityka
unless-stopped
sprawia, że kontener będzie automatycznie restartowany po zatrzymaniu (chyba że zostanie zatrzymany ręcznie).
Uruchomienie Kontenerów
Po zdefiniowaniu woluminu w pliku docker-compose.yml
, uruchom lub ponownie uruchom swoje kontenery, aby zastosować zmiany. Możesz to zrobić za pomocą poniższego polecenia wykonanego w katalogu, w którym znajduje się Twój plik docker-compose.yml
:
docker-compose up -d
Dodatkowe informacje:
- Dokumentacja Dockera: https://docs.docker.com/
- Kurs Dockera: https://www.docker.com/get-started
- Społeczność Dockera: https://forums.docker.com/
Uwaga: Ten cheatsheet jest tylko krótkim podsumowaniem. Więcej informacji można znaleźć w dokumentacji Dockera. Polecenia Dockera mogą się różnić w zależności od wersji.