Benutzer-Werkzeuge

Webseiten-Werkzeuge


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 [2025/06/09 08:43]
jango [Installation]
docker [2025/06/22 03:46] (aktuell)
jango [Registry]
Zeile 1: Zeile 1:
-Docker ist eine Open-Source-Plattform zur [[container|Containerisierung]] von Anwendungen. Es ermöglicht die ErstellungBereitstellung und Ausführung von Anwendungen in isolierten Containern, die unabhängig von der zugrunde liegenden Infrastruktur sind. Docker bietet eine standardisierte Methode zum Verpacken von Software und allen damit verbundenen Abhängigkeiten in ein einzelnes Paket, das als Docker-Image bezeichnet wird. Diese Images können dann auf jedem System ausgeführt werden, das Docker unterstützt.+Docker ist eine Open-Source-Plattform zur [[container|Containerisierung]] von Anwendungen. Es ermöglicht das ErstellenBereitstellen und Ausführen von Anwendungen in isolierten Containern, die alle notwendigen Abhängigkeiten enthalten und plattformunabhängig betrieben werden können.
  
-Docker basiert auf der Linux-Containertechnologie ([[LXC]]) und nutzt die Funktionen des Linux-Kernels, um isolierte Umgebungen, sogenannte Container, zu erstellenJeder Container enthält eine eigenständige und isolierte Umgebung, in der eine Anwendung und ihre Abhängigkeiten ausgeführt werden können. Die Isolation sorgt dafürdass eine Anwendung und ihre Abhängigkeiten unabhängig von anderen Containern und dem Hostsystem ausgeführt werden können, was zu einer besseren Portabilität und Skalierbarkeit führt.+Ursprünglich auf LXC basierend, nutzt Docker heute seine eigene Laufzeit (runc) und baut auf Funktionen des Linux-Kernels wie Namespaces und Control Groups auf, um die Isolation der Container sicherzustellenDiese Architektur sorgt für hohe Portabilitäteffiziente Ressourcennutzung und einfache Skalierbarkeit von Anwendungen.
  
 Siehe auch [[kubernetes|Kubernetes]]. Siehe auch [[kubernetes|Kubernetes]].
Zeile 176: Zeile 176:
 ^Name^Beschreibung^ ^Name^Beschreibung^
 |none|todo| |none|todo|
-|Host|Das Host-Netzwerkmodell verwendet das Netzwerk des Docker-Hosts direkt für die Container. Container, die das Host-Netzwerk verwenden, haben Zugriff auf alle Netzwerkressourcen des Hosts, einschließlich der Netzwerkschnittstellen und Ports. Dieses Modell bietet eine maximale Leistung, kann aber die Isolation zwischen Containern beeinträchtigen.| +|[[https://docs.docker.com/engine/network/drivers/host/|Host]]|Das Host-Netzwerkmodell verwendet das Netzwerk des Docker-Hosts direkt für die Container. Container, die das Host-Netzwerk verwenden, haben Zugriff auf alle Netzwerkressourcen des Hosts, einschließlich der Netzwerkschnittstellen und Ports. Dieses Modell bietet eine maximale Leistung, kann aber die Isolation zwischen Containern beeinträchtigen.| 
-|Bridge|Ein Bridge-Netzwerk ist das Standardnetzwerkmodell von Docker. Es erstellt ein isoliertes Netzwerk für Container auf dem Docker-Host und ermöglicht die Kommunikation zwischen Containern über einen gemeinsamen Bridge-Dienst. Bridge-Netzwerke sind standardmäßig in Docker aktiviert und bieten eine einfache Möglichkeit, Container zu verbinden.| +|[[https://docs.docker.com/engine/network/drivers/bridge/|Bridge]]|Ein Bridge-Netzwerk ist das Standardnetzwerkmodell von Docker. Es erstellt ein isoliertes Netzwerk für Container auf dem Docker-Host und ermöglicht die Kommunikation zwischen Containern über einen gemeinsamen Bridge-Dienst. Bridge-Netzwerke sind standardmäßig in Docker aktiviert und bieten eine einfache Möglichkeit, Container zu verbinden.| 
-|Overlay|Overlay-Netzwerke werden verwendet, um Container über mehrere Docker-Hosts hinweg zu verbinden. Sie ermöglichen es Containern, über Host-Grenzen hinweg zu kommunizieren und eine skalierbare, verteilte Anwendung zu erstellen. Overlay-Netzwerke verwenden spezielle Protokolle wie VXLAN oder IPSec, um Container über das gesamte Cluster hinweg zu vernetzen.| +|[[https://docs.docker.com/engine/network/drivers/overlay/|Overlay]]|Overlay-Netzwerke werden verwendet, um Container über mehrere Docker-Hosts hinweg zu verbinden. Sie ermöglichen es Containern, über Host-Grenzen hinweg zu kommunizieren und eine skalierbare, verteilte Anwendung zu erstellen. Overlay-Netzwerke verwenden spezielle Protokolle wie VXLAN oder IPSec, um Container über das gesamte Cluster hinweg zu vernetzen.| 
-|MacVlan|Das macvlan Netzwerkmodell ermöglicht es Containern, eine eigene MAC-Adresse zu haben und direkt mit dem physikalischen Netzwerk zu kommunizieren. Jeder Container erhält eine eindeutige MAC-Adresse, die von der des Hosts abweichen kann. Dies ermöglicht es Containern, direkt auf das physische Netzwerk zuzugreifen und mit anderen Geräten zu kommunizieren, als ob sie direkt an das physische Netzwerk angeschlossen wären.| +|[[https://docs.docker.com/engine/network/drivers/macvlan/|MacVlan]]|Das macvlan Netzwerkmodell ermöglicht es Containern, eine eigene MAC-Adresse zu haben und direkt mit dem physikalischen Netzwerk zu kommunizieren. Jeder Container erhält eine eindeutige MAC-Adresse, die von der des Hosts abweichen kann. Dies ermöglicht es Containern, direkt auf das physische Netzwerk zuzugreifen und mit anderen Geräten zu kommunizieren, als ob sie direkt an das physische Netzwerk angeschlossen wären.| 
-|IpVlan|Das ipvlan Netzwerkmodell ist ähnlich wie das macvlan Modell, jedoch auf IP-Ebene. Es ermöglicht es Containern, eigene IP-Adressen zu haben und direkt mit dem physikalischen Netzwerk zu kommunizieren. Jeder Container erhält eine eindeutige IP-Adresse, die von der des Hosts abweichen kann.|+|[[https://docs.docker.com/engine/network/drivers/ipvlan/|IpVlan]]|Das ipvlan Netzwerkmodell ist ähnlich wie das macvlan Modell, jedoch auf IP-Ebene. Es ermöglicht es Containern, eigene IP-Adressen zu haben und direkt mit dem physikalischen Netzwerk zu kommunizieren. Jeder Container erhält eine eindeutige IP-Adresse, die von der des Hosts abweichen kann.|
  
 Mit  Mit 
Zeile 190: Zeile 190:
 </code> </code>
  
-kann man ein neues erstellen. Ein Container Interface an ein Netzwerk binden kann man mit dem Parameter --network.+kann man ein neues erstellen. Ein macvlan mit 
 + 
 +<code bash> 
 +network create -d macvlan --subnet=192.168.0.0/24 --gateway=192.168.0.1 -o parent=eth0 macvlan_net 
 +</code> 
 + 
 +Ein Container Interface an ein Netzwerk binden kann man mit dem Parameter --network.
  
 <code> <code>
 docker run -dit --name test --network mynetwork ubuntu docker run -dit --name test --network mynetwork ubuntu
 +
 +docker run -dit --name test --network macvlan_network --ip=192.168.0.2 ubuntu
 </code> </code>
  
Zeile 209: Zeile 217:
  
 Docker [[https://docs.docker.com/engine/install/|Installation]]. Docker [[https://docs.docker.com/engine/install/|Installation]].
 +
 +====Installer Script====
 +Die einfachste Weise ist das Installer Script von der Docker Website.
  
 <code> <code>
Zeile 216: Zeile 227:
 </code> </code>
  
-====Ubuntu====+====Ubuntu Repository==== 
 + 
 +Es gibt zwei verschiedene Paketquellen (Repositories) für Docker unter Ubuntu. Im offiziellen Ubuntu Repository ist das Paket docker.io erhältlich. Das ist aber oft veraltet und hinkt stark hinterher. Ausserdem wird es nicht direkt von Docker Inc. gepflegt und enthält nur Basis-Docker, keine Compose v2, kein Buildx.
  
 <code> <code>
-sudo apt install apt-transport-https ca-certificates curl software-properties-common +sudo apt install docker.io
-curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - +
-sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" +
-sudo apt update +
-sudo apt install docker-ce+
 </code> </code>
  
-<code> +====Docker Repository====
-# update packages +
-sudo apt-get update+
  
 +Dann gibt es noch das offizielle Docker Repository docker-ce (Community Edition). Dieses muss man manuell einbinden (GPG-Key, APT-Repo). Es wird allerdings von Docker inc. selbst gepflegt, ist immer die aktuellste Version und alle Plugins bekommt man auch.
 +
 +<code>
 # add pgp key for signed docker repository # add pgp key for signed docker repository
 sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
Zeile 243: Zeile 253:
 </code> </code>
  
-====WSL2==== 
  
-<code> 
-# Install Docker 
-curl -fsSL https://get.docker.com -o get-docker.sh 
-sudo sh get-docker.sh 
- 
-sudo usermod -aG docker $USER 
- 
-# Install Docker Compose v2 
-sudo apt-get update && sudo apt-get install docker-compose-plugin 
- 
-# Sanity check that both tools were installed successfully 
-docker --version 
-docker compose version 
- 
-# Using Ubuntu 22.04 or Debian 10 / 11? You need to do 1 extra step for iptables 
-# compatibility, you'll want to choose option (1) from the prompt to use iptables-legacy. 
-sudo update-alternatives --config iptables 
-</code> 
 =====Docker Daemon===== =====Docker Daemon=====
  
Zeile 283: Zeile 274:
 </code> </code>
  
 +=====Registry=====
 +
 +Run a local registry: Quick Version
 +
 +<code>
 +docker run -d -p 5000:5000 --restart always --name registry registry:2
 +</code>
 +
 +Now, use it from within Docker:
 +
 +<code>
 +docker pull ubuntu
 +docker tag ubuntu localhost:5000/ubuntu
 +docker push localhost:5000/ubuntu
 +</code>
 +See also [[https://hub.docker.com/_/registry]]
 =====Usage===== =====Usage=====
  
docker.1749451383.txt.gz · Zuletzt geändert: 2025/06/09 08:43 von jango