Uživatelské nástroje

Nástroje pro tento web


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í revizePředchozí verze
Následující verze
Předchozí verze
docker [2022/03/11 14:14] – [Ladění] djbuldogdocker [2025/08/28 10:09] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 9: Řádek 9:
     * img lze odstranit přes ''docker rmi <[REPOSITORY[:TAG]] | IMAGE_ID>''     * img lze odstranit přes ''docker rmi <[REPOSITORY[:TAG]] | IMAGE_ID>''
     * pokud je na image navázán nějaký kontejner, je třeba přidat force přes ''-f''     * pokud je na image navázán nějaký kontejner, je třeba přidat force přes ''-f''
 +    * skládá se z layers, které jsou za sebou formou inkrementů
   * container   * container
     * instance image     * instance image
Řádek 27: Řádek 28:
     * skript popisující jak sestavit vlastní obraz     * skript popisující jak sestavit vlastní obraz
     * image se vytvoří přes ''docker build -t REPOSITORY[:TAG] .''     * image se vytvoří přes ''docker build -t REPOSITORY[:TAG] .''
 +    * každý krok/příkaz vytváří novou layer, je proto dobré
 +      * shlukovat RUN příkazdy jen do jednoho RUN
 +      * dělat nejprve statické akce, aby šlo při dalším buildu využívat předchozí layers
 +        * například použít COPY dynamických souborů až po RUN instalaci balíčků přes apt
 +          * bacha, že RUN apt update se vlastně bere jako statický a cachuje se
 +    * další info v [[https://docs.docker.com/develop/develop-images/dockerfile_best-practices/|Dockerfile best practices]]
 +    * pro build a produkční img se hodí používat [[https://docs.docker.com/develop/develop-images/multistage-build/|multistage build]]
   * docker-compose.yml   * docker-compose.yml
     * popisuje jak vytvořit více kontejnerů najednou     * popisuje jak vytvořit více kontejnerů najednou
     * zpracovává docker-compose napsaný v python (pip install docker-compose)     * zpracovává docker-compose napsaný v python (pip install docker-compose)
- 
  
   * entrypoint   * entrypoint
Řádek 36: Řádek 43:
     * pokud není definován, použjije se ''/bin/sh -c''     * pokud není definován, použjije se ''/bin/sh -c''
     * COMMAND slouží jako další parametr k entrypoint. U default entry point jde tedy o ''/bin/sh -c COMMAND''     * COMMAND slouží jako další parametr k entrypoint. U default entry point jde tedy o ''/bin/sh -c COMMAND''
 +    * pokud je třeba spustit složitější systém, s vlastním cronem a tak.. pouští se většinou ''/sbin/init''
 ===== Komunikace mezi kontejnery ===== ===== Komunikace mezi kontejnery =====
  
-  * přes klasický socket +  * docker má 3 eddefinované sítě, které lze nastavit kontejneru 
-    * jeden kontejner otevřport, druhý se na něj ipojí +    * **none** - kontejner nemá žádnou síť kromě loopbacku 
-    * je potřeba znát čisla portuIP adresu, ... +    * **bridge** (výchozí) 
-  * s využitím ''--link'' +      * kontejner můžkomunikovat se všemi kontejnery v této síti a dostane se i do internetu es NAT.  
-    pokud běží oba kontejnery na stejném hostovi +      Pokud je potřeba nějaký port otevřít vnějšímu světuje třeba použít parametr ''-p HOST_PORT:CONTAINER_PORT'' 
-    * i spouštění kontejneru1 se zadaným link na běžící kontejner2 se do env kontejneru1 nastaví informace o kontejneru2 (jeho IPotevřené porty, ...) +      Každý kontejner má virtuální IP adresu, na kterou se ale NEdá dostat es hostname odpovídající názvu kontejneru.. to podporuje až vlastní síťne ta defaultní 
- +    * **host** 
-<code> +      * kontejner sdílí síťové rozhraní s hostemVšechny porty kontejneru se otevírají přímo na hostu.  
-root@baridell:/home/bari/tmp/docker1# docker run --rm debian env +      * Žádná izolace
-PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +      * Mohou nastávat konflikty portů různých kontejnerů
-HOSTNAME=4c5bf135fdbe +      * Pro komunikaci se používá IP/hostname hosta.
-HOME=/root +
-</code> +
- +
-<code> +
-root@baridell:/home/bari/tmp/docker1# docker run --rm --link run1 debian env +
-PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +
-HOSTNAME=738ad8b05c57 +
-RUN1_PORT=tcp://172.17.0.2:80 +
-RUN1_PORT_80_TCP=tcp://172.17.0.2:80 +
-RUN1_PORT_80_TCP_ADDR=172.17.0.2 +
-RUN1_PORT_80_TCP_PORT=80 +
-RUN1_PORT_80_TCP_PROTO=tcp +
-RUN1_NAME=/boring_kirch/run1 +
-HOME=/root +
-</code>+
  
 ===== Volume kontejnery ===== ===== Volume kontejnery =====
Řádek 91: Řádek 84:
 docker run -it --rm --volumes-from mujdatacont debian bash docker run -it --rm --volumes-from mujdatacont debian bash
 </code> </code>
 +
 +===== Časovače =====
 +
 +  * a) sleep v dockeru
 +    * kontejner trvale běží, ve sleepu
 +  * b) cron na hostu
 +  * c) suystemd timer na hostu
 +  * d) scheduler kuberneties
 +
 +===== HTTPS routování =====
 +
 +  * dělá se přes reverzní HTTPS proxy
 +  * obecně se nejčastěji používá
 +    * Traefik - docker prostředí, podporuje i obnovu certifikátů přes letsencrypt
 +    * NGINX - obecně často použivané, měl by být rychlý a lightweight
 +    * HAProxy
 +    * Apache/Lighttpd
 ===== Příklady ===== ===== Příklady =====
  
docker.1647004443.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki