Przejdź do treści
Biblioteka skilli
DevOps i chmura · Budowanie i kod

podman

/podman

Wspiera pracę z Podman: kontenery rootless, podman-compose, generowanie podów (Kubernetes YAML) i integrację z systemd dla bezpiecznych kontenerów OCI bez demona na Linuksie.

Repozytorium
Agent-Skills ↗
Licencja
MIT
Ostatnia zmiana repozytorium
01.10.2026

Ocena i bezpieczeństwo

100/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
1
Skrypty
0
Komentarze HTML
0
Adresy URL w SKILL.md
1
Przestarzałość

Brak sygnałów. Repozytorium zmienione 01.10.2026, bez odwołań do wycofanych modeli i API.

Licencja

MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.

Co robi i kiedy

Wspiera pracę z Podman: kontenery rootless, podman-compose, generowanie podów (Kubernetes YAML) i integrację z systemd dla bezpiecznych kontenerów OCI bez demona na Linuksie.

Oryginalny opis (EN)

Expert Podman container engine assistance covering rootless containers, podman-compose, pod generation (Kubernetes YAML), and systemd integration. Use when managing secure, daemonless OCI containers on Linux.

Jak działa

  1. When to Use
  2. Quick Start
  3. Core Concepts
  4. Common Patterns
  5. Best Practices
  6. Troubleshooting
  7. References
Sekcje z nagłówków SKILL.md, w oryginale · 133 linii, 551 słów
Podgląd SKILL.md
---
name: podman
description: Expert Podman container engine assistance covering rootless containers, podman-compose, pod generation (Kubernetes YAML), and systemd integration. Use when managing secure, daemonless OCI containers on Linux.
---

# Podman

Podman is a daemonless, rootless container engine for developing, running, and managing OCI containers and pods, functioning as a secure drop-in alternative to Docker.

## When to Use

- **Rootless & Daemonless Containerization**: Running OCI containers without requiring root privileges or background daemons.
- **Drop-in Docker CLI Replacement**: 100% command-line compatible alias (`alias docker=podman`) with enhanced security.
- **Podman Pods for Kubernetes Prototyping**: Grouping containers into shared network pods locally before deploying to Kubernetes.
- **Systemd Integration via Quadlets**: Running production containers managed natively by Linux `systemd` service managers.

## Quick Start

```bash
# Run a container (Rootless)
podman run -dt -p 8080:80 nginx

# Generate K8s YAML
podman kube generate my-container > pod.yaml

# Run K8s YAML locally
podman kube play pod.yaml
```

## Core Concepts

### Rootless Pod Architecture & Container Execution

Running containers without root privileges or central daemons:

```bash
# Run rootless container using user namespace mapping
podman run -d \
  --name web-app \
  -p 8080:8080 \
  --userns=keep-id \
  --security-opt no-new-privileges \
  registry.example.com/app:v1.0

# Group containers into a shared-namespace Pod (mirrors Kubernetes Pod)
podman pod create --name microservice-pod -p 3000:3000
podman run -d --pod microservice-pod --name api-service my-api:latest
podman run -d --pod microservice-pod --name redis-cache redis:alpine
```

### Systemd Integration with Podman Quadlets

Managing containers as native systemd services:

```ini
# ~/.config/containers/systemd/api-service.container
[Unit]
Description=Production API Microservice
After=network-online.target

[Container]
Image=registry.example.com/api-service:v2.1.0
ContainerName=api-service
PublishPort=8080:8080
Environment=NODE_ENV=production
UserNS=auto

[Service]
Restart=always

[Install]
WantedBy=default.target
```

```bash
# Reload systemd to generate service and start container
systemctl --user daemon-reload
systemctl --user start api-service
```

### Exporting Pods to Kubernetes YAML

Generating native Kubernetes manifests directly from local Podman pods:

```bash
# Generate Kubernetes Deployment and Service YAML
podman generate kube microservice-pod > k8s-deployment.yaml
```

## Common Patterns

### Generate Systemd Service for Rootless Container Autostart

**Problem**: Containers on bare-metal servers must start automatically on host boot without Docker daemon.

**Solution**:
Use Podman Quadlet or systemd service generation:

```bash
# Run rootless container
podman run -d --name web-api -p 8080:8080 myorg/api:latest

# Generate systemd unit file
podman generate systemd --new --name web-api > ~/.config/systemd/user/container-web-api.service

# Enable user systemd service to start on boot
systemctl --user enable --now container-web-api.service
loginctl enable-linger $USER
```

## Best Practices

**Do**:

- Run containers rootless (`--userns=keep-id`) to neutralize container breakout risks.
- Manage production containers on Linux servers using Podman Quadlets (`.container` systemd files).
- Use `podman generate kube` to prototype Kubernetes pod manifests locally.
- Configure `registries.conf` with explicit, secure container registry search paths.

**Don't**:

- Run containers with `--privileged` unless strictly managing bare-metal kernel hardware.
- Assume ports < 1024 are accessible rootless; use ports >= 1024 (e.g. 8080, 8443) or adjust sysctl.
- Leave orphaned storage layers; clean up periodically with `podman system prune`.

## Troubleshooting

| Error                                                    | Cause                                                        | Solution                                                                                       |
| :------------------------------------------------------- | :----------------------------------------------------------- | :--------------------------------------------------------------------------------------------- |
| `Error: rootless users cannot bind to ports < 1024`      | Linux non-privileged port binding restriction.               | Run on port >1024 (e.g. 8080) or set `sysctl net.ipv4.ip_unprivileged_port_start=80`.          |
| `Error: short-name "..." did not expand to any registry` | Podman requires fully qualified registry domains by default. | Use `docker.io/library/nginx:latest` or configure `registries.conf`.                           |
| `Subuid/subgid range missing for user`                   | User lacks subuid mappings for rootless namespaces.          | Add entry in `/etc/subuid` and `/etc/subgid` with `usermod --add-subuids 100000-165535 $USER`. |

## References

- [Podman Documentation](https://podman.io/)

Wersje

RepozytoriumWynikLicencja
Ta strona · G1Joshi/Agent-Skills100MIT
uw-ssec/rse-plugins100BSD-3-Clause
chrishuffman5/domain-expert100MIT
BagelHole/DevOps-Security-Agent-Skills100MIT

Migawka bazy z 28.10.2026 · wersja paczki 3e17028abe33 (skrót SHA-256 całej paczki)

Pobrania w ostatnich 30 dniach: 0 · ranking

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 100rhel-podman
    Wyjaśnia pracę z Podmanem na RHEL 8, 9 i 10: kontenery bezdemonowe i rootless, pody, sieci, Quadlet, Buildah, Skopeo i rozwiązywanie problemów.
  • 100runtimes
    Porównuje środowiska kontenerowe Docker, Podman i containerd i pomaga wybrać właściwe do konkretnego zastosowania.
  • 100containers
    Zarządza kontenerami Docker i Podman: optymalizacja Dockerfile, buildy wieloetapowe, Compose v2, sieci, wolumeny, utwardzanie, integralność łańcucha dostaw, health checks, limity zasobów, Quadlet z systemd i debugowanie.
  • 100rhel-docker-host
    Konfiguruje i zarządza kontenerami na RHEL 9, AlmaLinux i Rocky 9: Podman, Docker CE, Buildah, Skopeo, sieci i Quadlet.
  • 100apple-container
    Obsługuje CLI container od Apple do budowania i uruchamiania kontenerów OCI jako lekkich maszyn wirtualnych na macOS z Apple Silicon, bez demona Docker.
  • 100flox-containers
    Konteneryzuje środowiska Flox przez Docker lub Podman: obrazy kontenerów, eksport OCI, buildy wieloetapowe i przepływy wdrożeniowe.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.