it:server:docker

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
it:server:docker [2023/02/25 19:53] Petr Nosekit:server:docker [2025/08/02 12:09] (aktuální) Petr Nosek
Řádek 1: Řádek 1:
 ====== Docker ====== ====== Docker ======
 +
 +===== Vysvětlení příkazů Dockeru =====
 +
 +==== Příkaz docker system prune -f ====
 +
 +Tento příkaz slouží k odstranění nepotřebných dat z Dockeru, což zahrnuje zastavené kontejnery, visící svazky (volumes), nepoužívané sítě a nepřiřazené obrazy. Použití parametru **-f** způsobí, že příkaz proběhne bez nutnosti potvrzení od uživatele.
 +
 +<code bash>
 +docker system prune -f
 +</code>
 +
 +
 +**Vysvětlení:** Tento příkaz okamžitě odstraní všechny nepotřebné objekty bez požadavku na potvrzení. Používá se, když chcete rychle uvolnit místo v systému.
 +
 +**Poznámka:** Buďte opatrní při použití tohoto příkazu, protože odstraní i objekty, které mohou být potenciálně ještě použitelné. Doporučuje se tento příkaz použít po zajištění, že dané kontejnery nebo obrazy již nejsou potřeba.
 +
 +----
 +
 +==== Příkaz docker stats ====
 +
 +Příkaz docker stats umožňuje sledovat v reálném čase využití systémových prostředků (jako je CPU, paměť nebo síť) jednotlivými kontejnery.
 +
 +<code bash>
 +docker stats
 +</code>
 +
 +**Vysvětlení:** Tento příkaz zobrazí tabulku s metrikami pro všechny běžící kontejnery. Pokud chcete sledovat konkrétní kontejner, můžete specifikovat jeho název nebo ID.
 +
 +Příklad pro konkrétní kontejner
 +
 +<code bash>
 +docker stats <container_name_or_id>
 +</code>
 +
 +**Výsledek:** Zobrazí informace o využití systémových prostředků pouze pro kontejner "my_container".
 +
 +**Poznámka:** Tento příkaz je užitečný při diagnostice výkonu kontejnerů, zejména pokud některý z nich spotřebovává více prostředků, než je očekáváno.
 +
 +
 +
 +
 +===== Instalace =====
  
 Instalace dockeru pro Raspberry Pi: https://www.simplilearn.com/tutorials/docker-tutorial/raspberry-pi-docker nebo tento návod: https://dev.to/elalemanyo/how-to-install-docker-and-docker-compose-on-raspberry-pi-1mo Instalace dockeru pro Raspberry Pi: https://www.simplilearn.com/tutorials/docker-tutorial/raspberry-pi-docker nebo tento návod: https://dev.to/elalemanyo/how-to-install-docker-and-docker-compose-on-raspberry-pi-1mo
Řádek 24: Řádek 66:
 </code> </code>
  
 +
 +{{youtube>pg19Z8LL06w?}}
  
 ===== instalace na Debian ===== ===== instalace na Debian =====
Řádek 141: Řádek 185:
  
 Konfigurace zajistí, že port 9000 bude přístupný pouze na localhostu. Čerpal jsem z diskuse: [[https://stackoverflow.com/questions/45109398/how-can-i-make-docker-compose-bind-the-containers-only-on-defined-network-instea|How can I make docker-compose bind the containers only on defined network instead of 0.0.0.0?]] Konfigurace zajistí, že port 9000 bude přístupný pouze na localhostu. Čerpal jsem z diskuse: [[https://stackoverflow.com/questions/45109398/how-can-i-make-docker-compose-bind-the-containers-only-on-defined-network-instea|How can I make docker-compose bind the containers only on defined network instead of 0.0.0.0?]]
 +
 +
 +==== Aktualizace kontejnerů pomocí docker-compose ====
 +
 +=== 1. Stáhnout nové verze obrazů ===
 +V příkazovém řádku spusťte:
 +
 +<code bash>
 +docker-compose pull
 +</code>
 +
 +Tento příkaz stáhne nejnovější verze obrazů, které jsou definované v `docker-compose.yml`.
 +
 +=== 2. Restartovat kontejnery s novými obrazy ===
 +Po stažení nových verzí spusťte:
 +
 +<code bash>
 +docker-compose up -d
 +</code>
 +
 +Tento příkaz:
 +  * Spustí nové kontejnery s aktualizovanými obrazy.
 +  * Nepoužije cache a vynutí rekreaci všech kontejnerů.
 +
 +Pokud chcete kontejnery úplně odstranit a vytvořit nové, použijte:
 +
 +<code bash>
 +docker-compose down
 +docker-compose up -d
 +</code>
 +
 +Tento postup zajistí kompletní restart všech služeb.
 +
 +=== 3. Odstranění starých nepoužívaných obrazů ===
 +Po úspěšné aktualizaci můžete smazat staré nepoužívané obrazy, aby nezabíraly místo:
 +
 +<code bash>
 +docker image prune -f
 +</code>
 +
 +=== 4. Ověření verzí ===
 +Chcete-li zjistit, jaké verze kontejnerů běží, použijte:
 +
 +<code bash>
 +docker ps
 +</code>
 +
 +Případně si zobrazte detaily konkrétního kontejneru:
 +
 +<code bash>
 +docker inspect <container_name>
 +</code>
 +
 +Tento postup zajišťuje bezpečnou a efektivní aktualizaci kontejnerů s minimálním výpadkem služby. 🚀
  
  
Řádek 261: Řádek 359:
  
  
 +===== Mysql a phpmyadmin =====
  
 +Tady je obsah souboru //docker-dompose.yml//
 +
 +<code>
 +version: '3.7'                                                              
 +
 +services:                                                                   
 +  mariadb:                                                                  
 +    container_name: mysql                                                   
 +    image: mysql:latest                                                     
 +    ports:                                                                  
 +      - "3306:3306"                                                         
 +    environment:                                                            
 +      MYSQL_ROOT_PASSWORD: supersecretpassword   # Změňte heslo podle vašich potřeb
 +    volumes:                                                                
 +      - mysql-data:/var/lib/mysql                                           
 +    restart: unless-stopped                                                 
 +
 +  phpmyadmin:                                                               
 +    container_name: phpmyadmin                                              
 +    image: phpmyadmin/phpmyadmin                                            
 +    environment:                                                            
 +      PMA_HOST: mariadb                                                     
 +      MYSQL_ROOT_PASSWORD: supersecretpassword   # Musí být stejné jako v mariadb  
 +    depends_on:                                                             
 +      - mariadb                                                             
 +    ports:                                                                  
 +      - "8080:80"   # PHPMyAdmin bude dostupný na portu 8080                
 +    restart: unless-stopped                                                 
 +
 +volumes:                                                                    
 +  mysql-data:
 +
 +</code>
 +
 +Pro připojení k mysql serveru používat IP adresu: 127.0.0.1. Při použití localhost a mi nepodařilo připojit k databázi.
  
 ===== Linux desktop ===== ===== Linux desktop =====
Řádek 306: Řádek 440:
 ./menu.sh ./menu.sh
 </code> </code>
 +
 +Update 1.1.2024: Aktuálně je doporučený postup instalace na existující systém:
 +
 +<code bash>
 +sudo apt install -y curl
 +curl -fsSL https://raw.githubusercontent.com/SensorsIot/IOTstack/master/install.sh | bash
 +</code>
 +
 +Pozor, systém se restartuje.
  
 Pomocí IOTstack lze nainstalovat i samotný docker a docker-composer. Nebo aktualizovat celý stack. Kromě videa lze využít také [[https://sensorsiot.github.io/IOTstack/Basic_setup/|dokumentaci k IOStack]], ve které jsou další užitečné příkazy. Pomocí IOTstack lze nainstalovat i samotný docker a docker-composer. Nebo aktualizovat celý stack. Kromě videa lze využít také [[https://sensorsiot.github.io/IOTstack/Basic_setup/|dokumentaci k IOStack]], ve které jsou další užitečné příkazy.
Řádek 348: Řádek 491:
  
 Návod na zabezpečení Node-Redu přes SSL a autentizace: http://stevesnoderedguide.com/securing-node-red-ssl Návod na zabezpečení Node-Redu přes SSL a autentizace: http://stevesnoderedguide.com/securing-node-red-ssl
 +
 +
 +===== Redmine a databáze na hostitelském systému =====
 +
 +Řešil jsem instalaci Redmine, kde samotný Redmine běží v Dockeru, ale databáze (MySQL/MariaDB) běží přímo na hostitelském systému. Níže popisuji postup a hlavní úskalí.
 +
 +==== Nastavení databáze ====
 +
 +Nejprve jsem si musel ověřit, na jakých adresách MySQL/MariaDB naslouchá. V mém případě jsem v souboru /etc/mysql/mariadb.conf.d/50-server.cnf měl následující řádek. 
 +
 +<code>
 +bind-address = 127.0.0.1
 +</code>
 +
 +
 +==== Zjištění IP adresy docker0 ====
 +
 +Aby Redmine z Dockeru mohl přistupovat k databázi na hostitelském systému, zjistil jsem IP adresu rozhraní docker0 příkazem:
 +
 +<code bash>
 +ip addr show docker0
 +</code>
 +
 +Je potřeba myslet na to, že tato IP adresa se může po restartu systému změnit, takže je dobré počítat s tím do budoucna.
 +
 +==== Konfigurace docker-compose.yml ====
 +
 +Redmine jsem nastavil v docker-compose.yml takto:
 +
 +<code yaml>
 +redmine:
 +  container_name: redmine
 +  image: redmine
 +  restart: always
 +  ports:
 +    - '127.0.0.1:3000:3000'
 +  environment:
 +    REDMINE_DB_MYSQL: 172.17.0.1
 +    REDMINE_DB_PORT: 33060
 +    REDMINE_DB_USERNAME: username
 +    REDMINE_DB_PASSWORD: password
 +    REDMINE_DB_DATABASE: database
 +    REDMINE_SECRET_KEY_BASE: secret_key_base
 +  volumes:
 +    - './volumes/redmine/configuration.yml:/usr/src/redmine/config/configuration.yml'
 +    - './volumes/redmine/plugins:/usr/src/redmine/plugins'
 +</code>
 +
 +Klíčový je zde parametr REDMINE_DB_MYSQL, kam jsem zadal IP adresu hostitelského systému (obvykle 172.17.0.1).
 +
 +==== Konfigurace reverse proxy (Apache) ====
 +
 +V konfiguraci Apache jsem pro přístup na Redmine přes webový server přidal tuto část:
 +
 +<code>
 +# Reverse proxy konfigurace
 +ProxyPreserveHost On
 +ProxyPass / http://localhost:3000/
 +ProxyPassReverse / http://localhost:3000/
 +</code>
 +
 +Takto jsem úspěšně rozchodil Redmine v Dockeru s databází na hostiteli a přístupem přes Apache reverse proxy.
 +
 +
 +==== konfigurace firewallu ====
 +
 +Musel jsem nakonfigurovat ještě firewall a povolit komunikaci z Redmine na MySQL databázi.
 +
 +IP adresu Redmine jsem zjistil pomocí tohoto příkazu:
 +
 +<code bash>
 +docker inspect redmine | grep -i ipaddress
 +</code>
 +
 +Pro firewall jsem přidal tyto příkazy:
 +
 +<code bash>
 +ufw allow proto tcp from 172.19.0.2 to any port 33060
 +ufw allow proto udp from 172.19.0.2 to any port 33060
 +</code>
 +
 +Tohle znamená:
 +
 +* Povoluje veškerý provoz (příchozí) na port 33060 přes TCP a UDP pouze z IP adresy 172.19.0.2.
 +
 +V kontextu Dockeru je 172.19.0.2 adresa Redmine. Opět po restartu může být jiná a tohle ještě nemám dořešené, takže je potřeba to zkontrolovat a případně přenastavit firewall.
 +
 +
  • it/server/docker.1677354829.txt.gz
  • Poslední úprava: 2023/02/25 19:53
  • autor: Petr Nosek