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/01/02 18:10] – [firefox] Petr Nosekit:server:docker [2025/02/11 17:29] (aktuální) – [Tvorba docker composer souboru] 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 22: Řádek 64:
 <code bash> <code bash>
 systemctl enable docker systemctl enable docker
 +</code>
 +
 +
 +{{youtube>pg19Z8LL06w?}}
 +
 +===== instalace na Debian =====
 +
 +Vycházel jsem z článku: [[https://linuxhint.com/install-docker-debian/|How to install Docker on Debian 11]].
 +
 +<code bash>
 +apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common
 +curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
 +echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list
 +apt update
 +apt install -y docker-ce docker-ce-cli containerd.io
 +docker -v
 </code> </code>
  
Řádek 65: Řádek 123:
  
 Nástroj na převedení příkazu dockeru pro docker-compose: https://www.composerize.com/ Nástroj na převedení příkazu dockeru pro docker-compose: https://www.composerize.com/
 +
 +==== Tvorba docker composer souboru ====
 +
 +Nejprve vytvořit **docker-conpose.yml**.
 +<code bash>
 +touch docker-compose.yml
 +</code>
 +
 +Nahraji například takový obsah:
 +<code bash>
 +version: '3.6'
 +services:
 +
 +    #https://github.com/jlesage/docker-firefox#environment-variables
 +    firefox:
 +        container_name: firefox
 +        ports:
 +            - '5800:5800'
 +        environment:
 +            - LANG=cs_CZ.UTF-8
 +            - SECURE_CONNECTION=1
 +            - SECURE_CONNECTION_VNC_METHOD=SSL
 +            #ATTENTION: Password is limited to 8 characters.
 +            - VNC_PASSWORD=secret
 +        volumes:
 +            - '/mnt/firefox:/config:rw'
 +        shm_size: '2gb'
 +        image: jlesage/firefox
 +
 +</code>
 +
 +Když chci otestovat, zda je konfigurační soubor ok, spustím:
 +
 +<code bash>
 +docker-compose config
 +</code>
 +
 +
 +Pokud je všechno ok, tak tento příkaz nainstaluje kontejner:
 +
 +<code bash>
 +docker-compose up -d
 +</code>
 +
 +Tento příkaz kontejner vypne a smaže (kromě obsahu ve **volumes**):
 +
 +<code bash>
 +docker-compose down
 +</code>
 +
 +
 +
 +=== docker-compose - služba pouze na localhostu ===
 +
 +Pokud chci, aby běžela služba pouze na localhostu, tak se v konfiguračním souboru v sekci ports napíše toto:
 +
 +<code>
 +ports:
 +  - "127.0.0.1:9000:9000"
 +</code>
 +
 +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 91: Řádek 265:
   * https://unix.stackexchange.com/questions/598471/docker-container-shows-sleep-cannot-read-realtime-clock-operation-not-permit   * https://unix.stackexchange.com/questions/598471/docker-container-shows-sleep-cannot-read-realtime-clock-operation-not-permit
   * https://forum.inductiveautomation.com/t/docker-container-does-not-start/43915/8   * https://forum.inductiveautomation.com/t/docker-container-does-not-start/43915/8
 +
 +Tady je ještě varianta konfiguračního souboru pro instalaci skrze docker compose:
 +
 +<code>
 +version: '3.6'
 +services:
 + 
 +    nextcloudpi:
 +    container_name: nextcloudpi
 +    ports:
 +        - '80:80'
 +        - '4443:4443'
 +        - '443:443'
 +    privileged: true
 +    volumes:
 +        - '/mnt/nextcloud:/data'
 +    image: ownyourbits/nextcloudpi
 +
 +</code> 
 +
  
  
Řádek 114: Řádek 308:
  
 ===== firefox ===== ===== firefox =====
 +
 +Defaultně využívá port: **5800**. 
  
 Jsou situace, kdy chci přes noc stáhnout něco většího ze serveru, nicméně potřebuji k tomu celý web browser - kvůli autentizaci je někdy nemožné použít příkazovou řádku pro stažení. Je lepší použít webový prohlížeč a neukončovat ho, dokud se soubor nestáhne. Dříve jsem to řešil tak, že jsem měl na mikropočítači nainstalovaný celý desktop a připojoval jsem se vzdáleně přes VNC. Nicméně pokud se jedná o server, tak je docela nešikovné, kvůli této jednorázovce instalovat celý desktop. Problém perfektně vyřeší instalace [[https://hub.docker.com/r/jlesage/firefox|firefoxu v dockeru]].  Jsou situace, kdy chci přes noc stáhnout něco většího ze serveru, nicméně potřebuji k tomu celý web browser - kvůli autentizaci je někdy nemožné použít příkazovou řádku pro stažení. Je lepší použít webový prohlížeč a neukončovat ho, dokud se soubor nestáhne. Dříve jsem to řešil tak, že jsem měl na mikropočítači nainstalovaný celý desktop a připojoval jsem se vzdáleně přes VNC. Nicméně pokud se jedná o server, tak je docela nešikovné, kvůli této jednorázovce instalovat celý desktop. Problém perfektně vyřeší instalace [[https://hub.docker.com/r/jlesage/firefox|firefoxu v dockeru]]. 
  
 Další možnosti konfigurace kontejneru lze [[https://github.com/jlesage/docker-firefox|vyčíst z dokumentace na githubu]] Další možnosti konfigurace kontejneru lze [[https://github.com/jlesage/docker-firefox|vyčíst z dokumentace na githubu]]
 +
 +
 +==== instalace ====
 +
 +<code bash>
 +docker run -d --name=firefox -p 5800:5800 -v /docker/appdata/firefox:/config:rw --shm-size 2g jlesage/firefox
 +</code>
  
  
Řádek 131: Řádek 334:
  
  
 +==== docker compose file ====
  
 +<code bash>
 +version: '3.6'
 +services:
  
 +    #https://github.com/jlesage/docker-firefox#environment-variables
 +    firefox:
 +        container_name: firefox
 +        ports:
 +            - '5800:5800'
 +        environment:
 +            - LANG=cs_CZ.UTF-8
 +            - SECURE_CONNECTION=1
 +            - SECURE_CONNECTION_VNC_METHOD=SSL
 +            #ATTENTION: Password is limited to 8 characters.
 +            - VNC_PASSWORD=secret
 +        volumes:
 +            - '/mnt/firefox:/config:rw'
 +        shm_size: '2gb'
 +        image: jlesage/firefox
  
 +</code>
 +
 +
 +===== 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 154: Řádek 416:
  
 <code bash> <code bash>
-apt-install build-essential python3-dev python3-dev pip3 install wheel+apt-get install build-essential python3-dev python3-dev python3-pip python3-wheel
 </code> </code>
  
Řádek 178: Řá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.
  • it/server/docker.1672683029.txt.gz
  • Poslední úprava: 2023/01/02 18:10
  • autor: Petr Nosek