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 [19/09/2022 - 17:59] – [Custom networks] thommie4docker [05/03/2024 - 10:52] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 9: Zeile 9:
   * Docker UI: [[http://linoxide.com/linux-how-to/setup-dockerui-web-interface-docker/|http://linoxide.com/linux-how-to/setup-dockerui-web-interface-docker/]]   * Docker UI: [[http://linoxide.com/linux-how-to/setup-dockerui-web-interface-docker/|http://linoxide.com/linux-how-to/setup-dockerui-web-interface-docker/]]
  
-Docker Daten-Ablage verlagern+Docker Daten-Ablage auf btrfs Partition verlagern
  
 <code> <code>
Zeile 15: Zeile 15:
  
 { {
-  "graph":  "/mnt/data/docker"+   "storage-driver": "btrfs", 
 +   "data-root":  "/mnt/data/docker"
 } }
 </code> </code>
Zeile 138: Zeile 139:
 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/]] 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 V2=====+===== Docker Compose =====
  
-Docker Compose erzeugt Docker Applikationen, die aus mehreren Containern bestehen. docker-compose up startet alles im Verbund.+Docker Compose erzeugt Docker Applikationen, die aus mehreren Containern bestehen. docker compose up startet alles im Verbund.
  
   - Das Dockerfile definiert die Laufzeit-Umgebung   - Das Dockerfile definiert die Laufzeit-Umgebung
Zeile 146: Zeile 147:
   - "docker compose up" erzeugt und startet die gesamte Applikation   - "docker compose up" erzeugt und startet die gesamte Applikation
  
-Achtung: Die python basierten Docker Versionen (V1) in den Distro-Repos sind meist veraltet. Es empfiehlt sich, die V2 aus https://github.com/docker/compose zu benutzen, die in GOLANG neu geschrieben wurde.+Achtung: Die python basierten Docker Versionen (V1) in manchen Distro-Repos sind veraltet. Es empfiehlt sich, die V2 aus https://github.com/docker/compose zu benutzen, die in GOLANG neu geschrieben wurde. Installation siehe https://github.com/docker/compose/ 
  
-Installation siehe https://github.com/docker/compose/+<badge>HinweisFür Raspis wird das Binary für ...-linux-armv7 benutzt (ARM Architektur)</badge>
  
 Um docker-compose files im Format V1 auszuführen, gibt es "compose switch": https://github.com/docker/compose-switch. Dafür muss das golang binary in /usr/local/lib/docker/cli-plugins/docker-compose vorhanden sein. composer switch bindet composer V2 so ein, dass man mit update-alternatives zwischen V1 (python) und V2 (golang) wechseln kann. Um docker-compose files im Format V1 auszuführen, gibt es "compose switch": https://github.com/docker/compose-switch. Dafür muss das golang binary in /usr/local/lib/docker/cli-plugins/docker-compose vorhanden sein. composer switch bindet composer V2 so ein, dass man mit update-alternatives zwischen V1 (python) und V2 (golang) wechseln kann.
Zeile 181: Zeile 182:
 </code> </code>
  
-Update per docker-compose+===== compose yaml validieren ===== 
 + 
 +<code> 
 +docker compose -f docker-compose-pro.yaml config 
 +</code> 
 + 
 + 
 +====== Update per docker compose ======
  
 Update der Images, die im compose file referenziert sind Update der Images, die im compose file referenziert sind
  
 <code> <code>
-docker-compose pull+docker compose -f docker-compose-pro.yaml pull 
 </code> </code>
  
Zeile 192: Zeile 201:
  
 <code> <code>
-docker-compose up --build+docker compose -f docker-compose-pro.yaml up --build 
 </code> </code>
 +<code>
 +docker compose -f docker-compose-pro.yaml up --force-recreate --build -d
 +
 +</code>
 +
 +Docker Compose startet die Container, aber nicht daemonisiert. Dazu -d hinzufügen:
  
 <code> <code>
-docker-compose up --force-recreate --build -d+docker compose up -d 
 </code> </code>
 +
 +Üblicherweise nimmt man dafür systemd.
 +
  
 ===== Docker Netzwerke ===== ===== Docker Netzwerke =====
Zeile 220: Zeile 240:
  
 sieht man den Zustand eines Docker networks sieht man den Zustand eines Docker networks
 +
 ==== Custom networks ==== ==== Custom networks ====
  
Zeile 245: Zeile 266:
  
 <code> <code>
-docker logs --follow+docker logs --follow [containerid] 
 </code> </code>
 +
  
 ===== Docker volumes ===== ===== Docker volumes =====
  
-[[https://docs.docker.com/engine/admin/volumes/volumes/|https://docs.docker.com/engine/admin/volumes/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.
  
 +Doku: https://docs.docker.com/engine/admin/volumes/
  
-===== Kubernetes =====+In compose: 
 +<code> 
 +services: 
 +  frontend: 
 +    image: node:lts 
 +    volumes: 
 +      - myapp:/home/node/app 
 +volumes: 
 +  myapp: 
 +    external: true 
 +</code> 
 + 
 +Syntax: **[lokales volume Verzeichnis Host]:[Verzeichnis im Container]** 
 + 
 +Immer relativ zum compose file gesehen! 
 +===== Docker build ===== 
 + 
 +<code> 
 +thommie@odysseus3:~/git/gitea/dockerbuilds/myradius> docker build -f myradius.docker . 
 +Sending build context to Docker daemon  5.632kB 
 +Step 1/3 : FROM freeradius/freeradius-server:latest 
 + ---> 0a093ead10b6 
 +Step 2/3 : COPY raddb/ /etc/raddb/ 
 + ---> 096f00c66db0 
 +Step 3/3 : EXPOSE 1812-1813/udp 
 + ---> Running in 6d5f572b0a8b 
 +Removing intermediate container 6d5f572b0a8b 
 + ---> c6c0d41f944a 
 +Successfully built c6c0d41f944a 
 +</code>
  
-  * Auf Ubuntu: [[http://thedevopsblog.com/containers/kubernetes-1-4-setup-in-ubuntu-16-04/|http://thedevopsblog.com/containers/kubernetes-1-4-setup-in-ubuntu-16-04/]] 
-  * Offizielle Tutorials: [[https://kubernetes.io/docs/tutorials/kubernetes-basics/|https://kubernetes.io/docs/tutorials/kubernetes-basics/]] 
-  * weitere: [[https://marc.wäckerlin.ch/computer/kubernetes-on-ubuntu-16-04#Cleanup_In_Case_of_Unsolvable_Problems|https://marc.wäckerlin.ch/computer/kubernetes-on-ubuntu-16-04]] 
  
 ==== Begrifflichkeiten ==== ==== Begrifflichkeiten ====
Zeile 266: Zeile 317:
   * Service: Funktion, die von einem oder mehreren Pods bereitgestellt wird   * Service: Funktion, die von einem oder mehreren Pods bereitgestellt wird
  
-==== Minikube - zum Üben ==== 
  
-Minikube is a tool that makes it easy to run Kubernetes locally. Minikube runs a single-node Kubernetes cluster inside a VM on your laptop for users looking to try out Kubernetes or develop with it day-to-day. +===== Portainer =====
- +
-[[https://github.com/kubernetes/minikube|https://github.com/kubernetes/minikube]] +
- +
-''curl -Lo minikube [[https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64|https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64]] chmod +x minikube mv minikube /usr/local/bin/ '' +
- +
-**Linux CI Installation Which Supports Running in a VM (example w/ kubectl installation)** +
- +
-''curl -Lo minikube [[https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64|https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64]] chmod +x minikube '' +
- +
-dann +
- +
-''curl -Lo kubectl [[https://storage.googleapis.com/kubernetes-release/release/|https://storage.googleapis.com/kubernetes-release/release/]] $( curl -s [[https://storage.googleapis.com/kubernetes-release/release/stable.txt|https://storage.googleapis.com/kubernetes-release/release/stable.txt]] ) /bin/linux/amd64/kubectl chmod +x kubectl '' +
- +
-und +
- +
-''export MINIKUBE_WANTUPDATENOTIFICATION=false export MINIKUBE_WANTREPORTERRORPROMPT=false export MINIKUBE_HOME$HOME export CHANGE_MINIKUBE_NONE_USER=true mkdir $HOME /.kube || true touch $HOME /.kube/config export KUBECONFIG$HOME /.kube/config sudo -E ./minikube start –vm-driver=none # this for loop waits until kubectl can access the api server that minikube has created for i in {1..150} # timeout for 5 minutes do ./kubectl get po &> /dev/null if [ $? -ne 1 ] ; then break fi sleep 2 done '' +
- +
-Minikube mit node.js hello world applikation: +
- +
-[[https://kubernetes.io/docs/tutorials/stateless-application/hello-minikube/|https://kubernetes.io/docs/tutorials/stateless-application/hello-minikube/]]+
  
 +<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
 +</code>
  • docker.1663610355.txt.gz
  • Zuletzt geändert: 05/03/2024 - 10:52
  • (Externe Bearbeitung)