Docker / Podman
In diesem Artikel wird beschrieben, wie Sie die Containertechnologien Docker und Podman unter Ubuntu 26.04 installieren und verwenden.
Installation von Docker CE
Entfernen Sie alte Versionen
sudo apt remove docker docker-engine docker.io containerd runc 2>/dev/nullInstallieren Sie Docker CE
# Install dependencies
sudo apt update
sudo apt install ca-certificates curl gnupg -y
# Add Docker official GPG key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add Docker repository
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -yVerwenden Sie Docker ohne Sudo
# Add current user to the docker group
sudo usermod -aG docker $USER
# Apply group changes (or log out and back in)
newgrp dockerÜberprüfen Sie die Installation
docker --version
docker compose version
docker run hello-worldDocker Mirror konfigurieren (China)
Bearbeiten Sie /etc/docker/daemon.json:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me"
]
}
EOF
# Restart Docker
sudo systemctl daemon-reload
sudo systemctl restart dockerDocker Grundlagen
Bildoperationen
# Pull an image
docker pull ubuntu:26.04
docker pull nginx:latest
# List local images
docker images
# Remove an image
docker rmi nginx:latest
# Build an image
docker build -t myapp:latest .
# Clean up unused images
docker image prune -aContainerbetrieb
# Run a container
docker run -d --name mynginx -p 8080:80 nginx
# List running containers
docker ps
# List all containers
docker ps -a
# Enter a container
docker exec -it mynginx bash
# View container logs
docker logs -f mynginx
# Stop and remove a container
docker stop mynginx
docker rm mynginx
# Clean up all stopped containers
docker container pruneBände
# Create a volume
docker volume create mydata
# Mount a volume
docker run -d -v mydata:/data --name mycontainer ubuntu
# Mount a host directory
docker run -d -v /home/user/data:/data --name mycontainer ubuntu
# List volumes
docker volume ls
docker volume inspect mydataDocker Verfassen
Docker Compose wird zum Definieren und Ausführen von Multi-Container-Anwendungen verwendet.
Beispiel: Web-App + Datenbank
Erstellen Sie compose.yaml:
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- db
db:
image: postgres:18
environment:
POSTGRES_DB: mydb
POSTGRES_USER: admin
POSTGRES_PASSWORD: secret
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
pgdata:Allgemeine Befehle zum Verfassen
# Start all services
docker compose up -d
# Check service status
docker compose ps
# View logs
docker compose logs -f web
# Stop all services
docker compose down
# Stop and remove volumes
docker compose down -v
# Rebuild and start
docker compose up -d --buildSchreiben einer Docker-Datei
Ein typisches mehrstufiges Build-Beispiel:
# Build stage
FROM node:22-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Runtime stage
FROM node:22-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
EXPOSE 3000
CMD ["node", "dist/index.js"]Podman: Eine Alternative zu Docker
Podman ist eine daemonlose Container-Engine, die mit der Docker-CLI kompatibel ist.
Installieren Sie Podman
sudo apt install podman -yÜberprüfen Sie die Installation:
podman --version
podman infoPodman Grundlagen
Die Befehle von Podman sind nahezu identisch mit denen von Docker:
# Pull and run a container
podman pull docker.io/library/nginx
podman run -d --name mynginx -p 8080:80 nginx
# List containers
podman ps
# Stop and remove
podman stop mynginx
podman rm mynginxUnterschiede zwischen Podman und Docker
- Daemonless: Podman erfordert keinen Hintergrund-Daemon-Prozess
- Rootless: Podman führt Container standardmäßig als normaler Benutzer aus und bietet so eine bessere Sicherheit
- Pod-Unterstützung: Podman unterstützt nativ das Pod-Konzept (ähnlich wie Kubernetes Pods).
- Kompatibilität: Die überwiegende Mehrheit der Docker-Befehle kann direkt durch Podman ersetzt werden
Richten Sie den Kompatibilitätsalias Docker ein
echo 'alias docker=podman' >> ~/.bashrc
source ~/.bashrcPodman Verfassen
# Install podman-compose (prefer apt or pipx to avoid the PEP 668 restriction)
sudo apt install -y podman-compose
# Or: sudo apt install -y pipx && pipx install podman-compose
# Usage is the same as docker compose
podman-compose up -d
podman-compose downDocker Systemwartung
# Check disk usage
docker system df
# Full cleanup (use with caution)
docker system prune -a --volumes
# Check Docker service status
sudo systemctl status dockerDocker und Podman haben jeweils ihre Stärken. Docker verfügt über ein ausgereifteres Ökosystem, während Podman eine bessere Sicherheit bietet und keinen Daemon erfordert. Wählen Sie je nach Bedarf.
FAQ
Soll ich Docker oder Podman wählen?
Wenn Sie Anfänger sind oder mit einem Team zusammenarbeiten müssen, wird Docker empfohlen, da es über ein ausgereifteres Ökosystem, umfangreichere Dokumentation und breitere Community-Unterstützung verfügt. Wenn Sie Wert auf Sicherheit legen oder in einer Umgebung ohne Root-Rechte arbeiten, ist Podman die bessere Wahl, da es keinen Daemon erfordert und standardmäßig als Nicht-Root-Benutzer ausgeführt wird.
Kann ich die Snap-Version von Docker verwenden?
Das docker.io-Paket im Ubuntu-Repository und die Snap-Version von Docker können verwendet werden, sie bleiben jedoch in der Regel hinter der offiziellen Docker CE-Version zurück und können Kompatibilitätsprobleme aufweisen. Für die neueste Version und beste Kompatibilität empfehlen wir die Installation von Docker CE aus dem offiziellen Docker-Repository, wie in diesem Artikel beschrieben.
Benötige ich Sudo, um Docker zu verwenden?
Standardmäßig sind Sudo-Berechtigungen erforderlich, um Docker-Befehle auszuführen. Nachdem Sie Ihren Benutzer zur Gruppe docker hinzugefügt haben, können Sie Docker ohne Sudo verwenden (führen Sie sudo usermod -aG docker $USER aus und melden Sie sich dann ab und wieder an). Beachten Sie, dass die Zugehörigkeit zur Docker-Gruppe gleichbedeutend mit Root-Rechten ist. Seien Sie daher in Umgebungen mit mehreren Benutzern vorsichtig.
Verwandte Artikel
- Docker Compose Service Orchestration – Stellen Sie Multi-Container-Anwendungen mit Docker Compose in einer Serverumgebung bereit
- Virtuelle Maschinen und Container – Vergleichen Sie VM- und Container-Technologien, um ihre jeweiligen Anwendungsfälle zu verstehen