Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
docker [2025/06/06 12:11] jango [Links] |
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 | + | Docker ist eine Open-Source-Plattform zur [[container|Containerisierung]] von Anwendungen. Es ermöglicht |
- | Docker | + | Ursprünglich auf LXC basierend, nutzt Docker |
Siehe auch [[kubernetes|Kubernetes]]. | Siehe auch [[kubernetes|Kubernetes]]. | ||
Zeile 28: | Zeile 28: | ||
* ENTRYPOINT: Die ENTRYPOINT-Anweisung in einem Dockerfile definiert den Standardbefehl oder das Skript, das beim Starten eines Containers ausgeführt wird. Der Befehl oder das Skript wird als ausführbare Datei innerhalb des Containers behandelt. | * ENTRYPOINT: Die ENTRYPOINT-Anweisung in einem Dockerfile definiert den Standardbefehl oder das Skript, das beim Starten eines Containers ausgeführt wird. Der Befehl oder das Skript wird als ausführbare Datei innerhalb des Containers behandelt. | ||
* VOLUME: Die VOLUME-Anweisung in einem Dockerfile wird verwendet, um ein oder mehrere Volumes im Container zu definieren. Ein Volume ist ein Speicherbereich, | * VOLUME: Die VOLUME-Anweisung in einem Dockerfile wird verwendet, um ein oder mehrere Volumes im Container zu definieren. Ein Volume ist ein Speicherbereich, | ||
+ | |||
+ | < | ||
+ | # Ubuntu with SSH and root login | ||
+ | FROM ubuntu | ||
+ | |||
+ | RUN apt-get update && apt-get install -y openssh-server | ||
+ | RUN mkdir / | ||
+ | |||
+ | RUN useradd -ms /bin/bash newuser | ||
+ | RUN echo " | ||
+ | |||
+ | #RUN echo ' | ||
+ | |||
+ | CMD ["/ | ||
+ | </ | ||
< | < | ||
Zeile 161: | 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:// |
- | |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, | + | |[[https:// |
- | |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, | + | |[[https:// |
- | |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, | + | |[[https:// |
- | |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:// |
Mit | Mit | ||
Zeile 175: | Zeile 190: | ||
</ | </ | ||
- | kann man ein neues erstellen. Ein Container Interface an ein Netzwerk binden kann man mit dem Parameter --network. | + | kann man ein neues erstellen. |
+ | |||
+ | <code bash> | ||
+ | network create -d macvlan --subnet=192.168.0.0/ | ||
+ | </ | ||
+ | |||
+ | Ein Container Interface an ein Netzwerk binden kann man mit dem Parameter --network. | ||
< | < | ||
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 | ||
</ | </ | ||
Zeile 194: | Zeile 217: | ||
Docker [[https:// | Docker [[https:// | ||
+ | |||
+ | ====Installer Script==== | ||
+ | Die einfachste Weise ist das Installer Script von der Docker Website. | ||
< | < | ||
curl -fsSL https:// | curl -fsSL https:// | ||
sh get-docker.sh | sh get-docker.sh | ||
+ | usermod -aG docker < | ||
</ | </ | ||
- | ====Ubuntu==== | + | ====Ubuntu |
+ | |||
+ | 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, | ||
< | < | ||
- | sudo apt install | + | sudo apt install docker.io |
- | curl -fsSL https:// | + | |
- | sudo add-apt-repository "deb [arch=amd64] https:// | + | |
- | sudo apt update | + | |
- | sudo apt install docker-ce | + | |
</ | </ | ||
+ | |||
+ | ====Docker Repository==== | ||
+ | |||
+ | 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. | ||
< | < | ||
- | # update packages | ||
- | sudo apt-get update | ||
- | |||
# 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 227: | Zeile 253: | ||
</ | </ | ||
- | ====WSL2==== | ||
- | < | ||
- | # Install Docker | ||
- | curl -fsSL https:// | ||
- | 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, | ||
- | sudo update-alternatives --config iptables | ||
- | </ | ||
=====Docker Daemon===== | =====Docker Daemon===== | ||
Zeile 267: | Zeile 274: | ||
</ | </ | ||
+ | =====Registry===== | ||
+ | |||
+ | Run a local registry: Quick Version | ||
+ | |||
+ | < | ||
+ | docker run -d -p 5000:5000 --restart always --name registry registry:2 | ||
+ | </ | ||
+ | |||
+ | Now, use it from within Docker: | ||
+ | |||
+ | < | ||
+ | docker pull ubuntu | ||
+ | docker tag ubuntu localhost: | ||
+ | docker push localhost: | ||
+ | </ | ||
+ | See also [[https:// | ||
=====Usage===== | =====Usage===== | ||