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/16 12:56] – [Základy] 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 29: Řádek 30:
     * každý krok/příkaz vytváří novou layer, je proto dobré     * každý krok/příkaz vytváří novou layer, je proto dobré
       * shlukovat RUN příkazdy jen do jednoho RUN       * shlukovat RUN příkazdy jen do jednoho RUN
-      * dělat nejprve statické akce, aby šlo při dalším buildu používat předchozí layers +      * dělat nejprve statické akce, aby šlo při dalším buildu využívat předchozí layers 
-        * například použít COPY až po instalaci dalších balíčků+        * 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 40: Řá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'' (LAGACY) +      * 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'' 
-    * při spouštění kontejneru1 se zadaným link na běžící kontejner2 se do env kontejneru1 nastaví informace o kontejneru2 (jeho IP, otevřené porty, ...)+      Každý kontejner má virtuální IP adresu, na kterou se ale NEdá dostat přes hostname odpovídající názvu kontejneru.. to podporuje až vlastní síť, ne ta defaultní 
 +    * **host** 
 +      * kontejner sdílí síťové rozhraní s hostem. Všechny porty kontejneru se otevírají přímo na hostu 
 +      * Žádná izolace. 
 +      * Mohou nastávat konflikty portů různých kontejnerů. 
 +      * Pro komunikaci se používá IP/hostname hosta.
  
-<code> 
-root@baridell:/home/bari/tmp/docker1# docker run --rm debian env 
-PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 
-HOSTNAME=4c5bf135fdbe 
-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> 
- 
-  * použít docker network 
-    * upravuje přímo /etc/hosts? 
- 
-<code> 
-Instead of 
- 
-$> docker run -d -P --name rethinkdb rethinkdb 
-$> docker run -d --link rethinkdb:rethinkdb my-server 
- 
-you will now use 
- 
-$> docker network create --name my-network 
-$> docker run -d -P --name rethinkdb1 --net=my-network rethinkdb 
-$> docker run -d --net=my-network my-server 
-</code> 
 ===== Volume kontejnery ===== ===== Volume kontejnery =====
  
Řádek 110: Řá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.1647431792.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki