docker

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
docker [21/09/2024 - 10:34] – [Docker Build] thommie4docker [11/03/2025 - 21:25] (aktuell) freifunk_netzwissen.de
Zeile 11: Zeile 11:
 Docker Daten-Ablage auf btrfs Partition verlagern Docker Daten-Ablage auf btrfs Partition verlagern
  
 +root@docker3:/etc/docker/daemon.json
 <code> <code>
- 
-root@docker3:/etc/docker# less daemon.json 
- 
 { {
    "storage-driver": "btrfs",    "storage-driver": "btrfs",
    "data-root":  "/mnt/data/docker"    "data-root":  "/mnt/data/docker"
 } }
- 
 </code> </code>
- 
-==== Images ==== 
- 
-Images aus Repository runterladen 
- 
-''docker pull '' 
- 
-Alle Images im lokalen repository zeigen 
- 
-<code> 
-root@develd:~# docker image ls 
-REPOSITORY                 TAG                 IMAGE ID       CREATED         SIZE 
-local_discourse/web_only   latest              21e8a905ef5c   4 weeks ago     2.65GB 
-grundic/jamulus            latest              9e97d3890ca8   5 weeks ago     90.3MB 
-discourse/base             2.0.20210217-2235   7027ba787aa6   2 months ago    2.22GB 
-discourse/base             2.0.20201221-2020   c0704d4ce2b4   4 months ago    2.11GB 
-local_discourse/data       latest              c7524a566464   5 months ago    2.44GB 
-discourse/base             2.0.20201004-2310   b64c37d7ab06   6 months ago    2.4GB 
-xbrowsersync/api           latest              a3554c99cc99   12 months ago   119MB 
- 
-</code> 
- 
-Image löschen 
- 
-<code> 
-docker image rm [id] 
- 
-</code> 
- 
-Image Repo aufräumen und ungenutzte Images löschen 
- 
-<code> 
-docker image prune [OPTIONS] 
- 
-</code> 
- 
-z.B: alle images löschen, die nicht von mindestens einem Container genutzt werden 
- 
-<code> 
-docker image prune -a 
- 
-</code> 
- 
-==== Container Management ==== 
- 
-Alle Container auf einmal stoppen 
- 
-<code> 
-    docker kill $(docker ps -q) 
-    docker rm $(docker ps -a -q) 
-    docker rmi $(docker images -q) 
- 
-</code> 
- 
-=== Container aus heruntergeladenem Image erzeugen === 
- 
- 
-''docker create''  erzeugt den Container und startet ihn **nicht,**  ''docker run''  macht beides. 
- 
-Alle laufenden und gestoppten Container zeigen: 
- 
-''docker ps -a '' 
- 
-Filtern auf laufende Container 
- 
-<code> 
-root@develd:~# docker ps -a -f status=running 
-CONTAINER ID   IMAGE                      COMMAND        CREATED        STATUS        PORTS                  NAMES 
-31f9a6ffcab8   grundic/jamulus            "Jamulus"      19 hours ago   Up 19 hours                          jolly_beaver 
-7c3cd1abf744   local_discourse/web_only   "/sbin/boot"   4 weeks ago    Up 5 days     127.0.0.1:84->80/tcp   web_only 
-05f7f43d0493   local_discourse/data       "/sbin/boot"   5 months ago   Up 5 days                            data 
- 
-</code> 
- 
-Laufende und gestoppte, aber nur die container id ausgeben 
- 
-''docker ps -aq '' 
- 
-Container zeigen, die nicht laufen 
- 
-<code> 
-root@develd:~# docker ps -aq -f status=exited 
-b39916cf84e2 
-e6e7c809ad34 
- 
-</code> 
- 
-Container starten/stoppen 
- 
-''docker start [ID] docker stop [ID] '' 
- 
-**Alle**  Container stoppen oder löschen 
- 
-<code> 
-docker stop $ (docker ps -a -q) docker rm $(docker ps -a -q) 
- 
-</code> 
- 
-Diese können mit docker rm gelöscht werden 
- 
-<code> 
-root@develd:~# docker rm e6e7c809ad34 
-e6e7c809ad34 
- 
-</code> 
- 
-Alle Container löschen, die nicht laufen 
- 
-<code> 
-docker container prune 
- 
-</code> 
- 
-Restart policy ändern 
- 
-<code> 
-docker update --restart=no matrix_synapse_1 
- 
-</code> 
- 
-==== Einen Container betreten ==== 
- 
-<code> 
-docker exec -t -i container_ID /bin/bash 
- 
-</code> 
- 
-Alternativ: stdin/out an den Container hängen: 
- 
-<code> 
-docker attach [OPTIONS] CONTAINER 
- 
-</code> 
- 
-Achtung: wieder raus mit **CTRL-p CTRL-q. **Details siehe [[https://docs.docker.com/engine/reference/commandline/attach/|https://docs.docker.com/engine/reference/commandline/attach/]] 
  
 ===== Docker Build ===== ===== Docker Build =====
- 
  
 https://stackify.com/docker-build-a-beginners-guide-to-building-docker-images/ https://stackify.com/docker-build-a-beginners-guide-to-building-docker-images/
  
-Geht immer von einem Dockerfile aus: https://docs.docker.com/reference/dockerfile/+Der Build geht immer von einem Dockerfile aus: https://docs.docker.com/reference/dockerfile/ und erzeugt ein Image
  
 <code> <code>
Zeile 243: Zeile 104:
 </code> </code>
  
-Der Build wird normalerweise gecacht, das kann man abschalten:+Dockerfle Syntax check
  
 <code> <code>
-docker build .+docker build --check .
 </code> </code>
  
-Dockerfle Syntax check+Der Build wird normalerweise gecacht, das kann man abschalten:
  
 <code> <code>
-docker build --check .+docker --no-cache build .
 </code> </code>
  
-Docker build mit tag:+Docker build ohne cache, aber mit tag:
  
 <code> <code>
-docker build -t thommie/example-node-app+docker build --no-cache -t thommie/freeradius01:v1 .
 </code> </code>
  
Zeile 302: Zeile 163:
  ---> c6c0d41f944a  ---> c6c0d41f944a
 Successfully built c6c0d41f944a Successfully built c6c0d41f944a
 +</code>
 +
 +==== Images ====
 +
 +Images aus Repository runterladen
 +
 +''docker pull ''
 +
 +Alle Images im lokalen repository zeigen
 +
 +<code>
 +root@develd:~# docker image ls
 +REPOSITORY                 TAG                 IMAGE ID       CREATED         SIZE
 +local_discourse/web_only   latest              21e8a905ef5c   4 weeks ago     2.65GB
 +grundic/jamulus            latest              9e97d3890ca8   5 weeks ago     90.3MB
 +discourse/base             2.0.20210217-2235   7027ba787aa6   2 months ago    2.22GB
 +discourse/base             2.0.20201221-2020   c0704d4ce2b4   4 months ago    2.11GB
 +local_discourse/data       latest              c7524a566464   5 months ago    2.44GB
 +discourse/base             2.0.20201004-2310   b64c37d7ab06   6 months ago    2.4GB
 +xbrowsersync/api           latest              a3554c99cc99   12 months ago   119MB
  
 </code> </code>
 +
 +Image löschen
 +
 +<code>
 +docker image rm [id]
 +
 +</code>
 +
 +Image Repo aufräumen und ungenutzte Images löschen
 +
 +<code>
 +docker image prune [OPTIONS]
 +
 +</code>
 +
 +z.B: alle images löschen, die nicht von mindestens einem Container genutzt werden
 +
 +<code>
 +docker image prune -a
 +
 +</code>
 +
 +==== Container Management ====
 +
 +Alle Container auf einmal stoppen
 +
 +<code>
 +    docker kill $(docker ps -q)
 +    docker rm $(docker ps -a -q)
 +    docker rmi $(docker images -q)
 +
 +</code>
 +
 +==== Container aus heruntergeladenem Image erzeugen ====
 +
 +''docker create''  erzeugt den Container und startet ihn **nicht,**  ''docker run''  macht beides.
 +
 +
 +
 +Alle laufenden und gestoppten Container zeigen:
 +
 +''docker ps -a ''
 +
 +Filtern auf laufende Container
 +
 +<code>
 +root@develd:~# docker ps -a -f status=running
 +CONTAINER ID   IMAGE                      COMMAND        CREATED        STATUS        PORTS                  NAMES
 +31f9a6ffcab8   grundic/jamulus            "Jamulus"      19 hours ago   Up 19 hours                          jolly_beaver
 +7c3cd1abf744   local_discourse/web_only   "/sbin/boot"   4 weeks ago    Up 5 days     127.0.0.1:84->80/tcp   web_only
 +05f7f43d0493   local_discourse/data       "/sbin/boot"   5 months ago   Up 5 days                            data
 +
 +</code>
 +
 +Laufende und gestoppte, aber nur die container id ausgeben
 +
 +''docker ps -aq ''
 +
 +Container zeigen, die nicht laufen
 +
 +<code>
 +root@develd:~# docker ps -aq -f status=exited
 +b39916cf84e2
 +e6e7c809ad34
 +
 +</code>
 +
 +Container starten/stoppen
 +
 +''docker start [ID] docker stop [ID] ''
 +
 +**Alle**  Container stoppen oder löschen
 +
 +<code>
 +docker stop $ (docker ps -a -q) docker rm $(docker ps -a -q)
 +
 +</code>
 +
 +Diese können mit docker rm gelöscht werden
 +
 +<code>
 +root@develd:~# docker rm e6e7c809ad34
 +e6e7c809ad34
 +
 +</code>
 +
 +Alle Container löschen, die nicht laufen
 +
 +<code>
 +docker container prune
 +
 +</code>
 +
 +Restart policy ändern
 +
 +<code>
 +docker update --restart=no matrix_synapse_1
 +
 +</code>
 +
 +==== Einen Container betreten ====
 +
 +<code>
 +docker exec -t -i container_ID /bin/bash
 +
 +</code>
 +
 +Alternativ: stdin/out an den Container hängen:
 +
 +<code>
 +docker attach [OPTIONS] CONTAINER
 +
 +</code>
 +
 +Achtung: wieder raus mit **CTRL-p CTRL-q. **Details siehe [[https://docs.docker.com/engine/reference/commandline/attach/|https://docs.docker.com/engine/reference/commandline/attach/]]
  
 ===== Docker Compose ===== ===== Docker Compose =====
Zeile 317: Zeile 313:
 <badge>Hinweis: Für Raspis wird das Binary für …-linux-armv7 benutzt (ARM Architektur)</badge> <badge>Hinweis: Für Raspis wird das Binary für …-linux-armv7 benutzt (ARM Architektur)</badge>
  
-===== compose yaml validieren =====+compose yaml validieren 
 <code> <code>
  
Zeile 324: Zeile 321:
 </code> </code>
  
-====== Update per docker compose ======+==== Update per docker compose ====
  
 Update der Images, die im compose file referenziert sind Update der Images, die im compose file referenziert sind
Zeile 330: Zeile 327:
 <code> <code>
 docker compose -f docker-compose-pro.yaml pull docker compose -f docker-compose-pro.yaml pull
- 
 </code> </code>
  
-Daraus die Container neu bauen und startenb+Daraus die Container neu bauen und starten
  
 <code> <code>
Zeile 339: Zeile 335:
  
 </code> </code>
 +
 +Bauen **ohne** caching und dann starten
  
 <code> <code>
-docker compose -f docker-compose-pro.yaml up --force-recreate --build -d +docker compose -f docker-compose-pro.yaml up --force-recreate --build
 </code> </code>
  
-Docker Compose startet die Container, aber nicht daemonisiert. Dazu -d hinzufügen:+Docker Compose startet Container nicht daemonisiert. Dafür -d hinzufügen:
  
 <code> <code>
-docker compose up -d +docker compose up --force-recreate --build -d
 </code> </code>
  
-Üblicherweise nimmt man dafür systemd.+Um Container als Daemon zu starten, nimmt man systemd.
  
 ===== Docker Netzwerke ===== ===== Docker Netzwerke =====
  
-Standardmässig werden drei Netze bridge, host, none angelegt. Alle anderen sind custom Networks, die z.Büber compose angelegt wurden:+Standardmässig werden drei Netze bridge, host, none angelegt. Alle anderen sind custom Networks, die z.Büber compose angelegt wurden:
  
 <code> <code>
Zeile 372: Zeile 368:
 Container werden an die bridge "docker0" auf dem Host gebunden, solange nicht beim docker create ein anderes Netzwerk gewählt wurde (''docker create –network=<NETWORK>''). Mit Container werden an die bridge "docker0" auf dem Host gebunden, solange nicht beim docker create ein anderes Netzwerk gewählt wurde (''docker create –network=<NETWORK>''). Mit
  
 +Dies zeigt den Zustand eines Docker networks
 <code> <code>
 docker network inspect bridge docker network inspect bridge
- 
 </code> </code>
  
-sieht man den Zustand eines Docker networks +==== Docker Custom networks ====
- +
-==== Custom networks ====+
  
 docker network create erzeugt ein eigenes Netzwerk: docker network create erzeugt ein eigenes Netzwerk:
Zeile 385: Zeile 379:
 <code> <code>
 docker network create –subnet 192.168.82.0/24 –driver bridge bridge2 docker network create –subnet 192.168.82.0/24 –driver bridge bridge2
- 
 </code> </code>
  
 +Danach anschauen
 <code> <code>
 locutus:/home/thommie # docker network inspect bridge2 [ { "Name": "bridge2", "Id": "9c353bcf0c2c6ccee0b821e1ff4d1740a074bdea94e93959c522d46a4e6fde8e", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "192.168.82.0/24" } ] }, "Internal": false, "Containers": {}, "Options": {}, "Labels": {} } ] locutus:/home/thommie # docker network inspect bridge2 [ { "Name": "bridge2", "Id": "9c353bcf0c2c6ccee0b821e1ff4d1740a074bdea94e93959c522d46a4e6fde8e", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "192.168.82.0/24" } ] }, "Internal": false, "Containers": {}, "Options": {}, "Labels": {} } ]
- 
 </code> </code>
  
Zeile 397: Zeile 390:
 <code> <code>
 docker attach container1 docker attach container1
- 
 </code> </code>
  
-sieht man das Netzwerk von innen+sieht man das Netzwerk aus Sicht des Containers
  
 ===== Docker logs ===== ===== Docker logs =====
Zeile 413: Zeile 405:
 ===== Docker volumes ===== ===== Docker volumes =====
  
-Volumes sind Verzeichnisse/Dtane, die vom lokalen Docker Host in den Container gemappt werden. Volumes werden vom Docker Dämon gemanagt, die Daten liegen innerhalb des vom Docker Dämon verwalteten Speicherbereichs.+Volumes sind Verzeichnisse/Dateien, die vom lokalen Docker Host in den Container gemappt werden. Volumes werden vom Docker Dämon gemanagt, Daten liegen innerhalb des vom Docker Dämon verwalteten Speicherbereichs.
  
 Doku: [[https://docs.docker.com/engine/admin/volumes/|https://docs.docker.com/engine/admin/volumes/]] Doku: [[https://docs.docker.com/engine/admin/volumes/|https://docs.docker.com/engine/admin/volumes/]]
  
 In compose: In compose:
-<code> 
  
 +<code>
 services: services:
   frontend:   frontend:
Zeile 428: Zeile 420:
   myapp:   myapp:
     external: true     external: true
- 
 </code> </code>
  
-Syntax: **[lokales volume Verzeichnis Host]:[Verzeichnis im Container]**+Allgemeine Syntax: **[lokales volume Verzeichnis Host]:[Verzeichnis im Container]**
  
-Immer relativ zum compose file gesehen!+Verzeichnisorte werden immer relativ zum Ort des compose file gesehen!
  
- +====== Portainer ======
- +
- +
-===== Portainer =====+
  
 <code> <code>
 docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
- 
 </code> </code>
  
  
  • docker.1726914844.txt.gz
  • Zuletzt geändert: 21/09/2024 - 10:34
  • von thommie4