# 🖥️ Portainer: Jak jednoduše spravovat Docker kontejnery přes webové rozhraní
👉 [[1.1.1 O projektu]]
👉 [[1.1.2 Vlastní digitální svět (přehled článků)]]
![[image_portainer.png]]
---
## 📜 Licence a cena
| Aspekt | Detail |
|--------|--------|
| **Licence** | Zlib (Community Edition) |
| **Self-hosting** | ✅ Ano, CE je zdarma bez omezení |
| **Business Edition** | Placená verze s enterprise funkcemi |
| **Cloud verze** | ❌ Pouze self-hosted |
| **Zdrojový kód** | [github.com/portainer/portainer](https://github.com/portainer/portainer) |
> Portainer Community Edition je **open-source pod Zlib licencí** – velmi permisivní, podobná MIT. Můžete ho používat kdekoliv bez omezení. Business Edition přidává RBAC, registry management a enterprise support.
### Co je v CE vs Business Edition
| Funkce | CE (zdarma) | Business |
|--------|-------------|----------|
| Správa kontejnerů | ✅ | ✅ |
| Docker Compose | ✅ | ✅ |
| Základní RBAC | ✅ | ✅ |
| Pokročilé RBAC | ❌ | ✅ |
| Registry management | ❌ | ✅ |
| GitOps (auto-update) | ❌ | ✅ |
| Enterprise support | ❌ | ✅ |
---
## 📌 Úvod: Proč používat Portainer?
Docker se dá spravovat z terminálu, ale někdy je praktičtější mít **vizuální rozhraní**.
[Portainer.io](https://www.portainer.io/) umožňuje:
- ✅ Snadnou správu kontejnerů bez psaní příkazů.
- ✅ Nasazování nových služeb přímo z webového panelu.
- ✅ Monitorování běžících kontejnerů, jejich výkonu a logů.
Tento článek vás provede **instalací a základní konfigurací Portaineru**, přičemž se **zaměříme na přístup přes IP adresu a porty** – což je ideální pro lokální prostředí.
> **🔜 V dalším díle:** Pokud budete chtít přístup přes doménu, ukážeme si nasazení **Traefik** jako reverzní proxy.
---
## 🚀 Instalace Portaineru v Dockeru
Spuštění Portaineru v samostatném kontejneru s definovanou sítí `digilifehub_network`:
```sh
docker network create digilifehub_network
docker run -d --name=portainer \
--network=digilifehub_network \
-p 9000:9000 \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
```
### 🛠️ Vysvětlení parametrů:
- `--network=digilifehub_network` – Použití jednotné sítě pro všechny služby v tomto seriálu.
- `-p 9000:9000` – Přístup přes **nešifrovaný HTTP** (doporučeno pro lokální instalaci).
- `-v /var/run/docker.sock:/var/run/docker.sock` – Přístup ke kontejnerům.
- `-v portainer_data:/data` – Uchování konfigurace i po restartu.
---
## 🔑 První spuštění a přístup k Portaineru
Po instalaci přejděte na **`http://IP_ADRESA:9000`**
**Pokud nevíte IP adresu vašeho serveru:**
- **Linux/macOS:** `hostname -I`
- **Windows (PowerShell):** `ipconfig`
1️⃣ **Přihlášení:** Vytvořte **admin účet**.
2️⃣ **Přidání Docker prostředí:** Zvolte **"Local Docker Environment"**.
---
## 📋 Základní funkce Portaineru
✅ **Dashboard:** Přehled všech běžících kontejnerů.
✅ **Správa kontejnerů:** Start, stop, restart, mazání.
✅ **Docker Compose:** Nasazování aplikací z `docker-compose.yml`.
✅ **Správa sítí a volume:** Jak propojit kontejnery mezi sebou.
---
## 🏗️ Praktická ukázka: Nasazení aplikace přes Portainer
### 🌍 Nasazení jednoduché aplikace (WordPress)
1. V Portaineru přejděte na **Containers → Add container**.
2. Zadejte název kontejneru (např. `my-wordpress`).
3. Do pole **Image** vložte:
```
wordpress:latest
```
4. Klikněte na **Publish a new network port**, nastavte `80:80`.
5. Klikněte na **Deploy the container**.
✅ **Aplikace je nyní dostupná na `http://IP_ADRESA:80`**.
---
## 🛠️ Alternativa: Spuštění Portaineru pomocí `docker-compose.yml`
Pokud chcete Portainer spravovat přes **Docker Compose**, použijte tento soubor:
```yaml
version: '3.8'
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: always
networks:
- digilifehub_network
ports:
- "9000:9000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
networks:
digilifehub_network:
external: true
volumes:
portainer_data:
```
### 📌 Spuštění příkazem:
```sh
docker-compose up -d
```
**Další užitečné příkazy:**
- **Ověření běžících kontejnerů:**
```sh
docker-compose ps
```
- **Zastavení Portaineru:**
```sh
docker-compose down
```
- **Úplné odstranění Portaineru včetně dat:**
```sh
docker-compose down -v
```
---
## 🔒 Přístup přes HTTPS (volitelné)
Pokud potřebujete **zabezpečený přístup přes HTTPS**, použijte místo toho **port 9443**:
```sh
docker run -d --name=portainer \
--network=digilifehub_network \
-p 9443:9443 \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
```
🔹 **Pozor:** Pokud se připojíte na `https://IP_ADRESA:9443`, váš prohlížeč zobrazí **varování o neplatném certifikátu**. Stačí ho **ručně potvrdit** a pokračovat dál.
---
## 📢 Kdy budete potřebovat reverzní proxy?
Pokud používáte Portainer **v lokální síti nebo svém PC pro testování**, přístup přes IP adresu bez HTTPS je pohodlnější. Jestli chcete zabezpečený přístup nebo **vystavit aplikace do internetu, používejte vždy HTTPS přístup!**
Pro **přístup přes doménu, HTTPS a subdomény**, budete potřebovat **Traefik**, který probereme v dalším článku.
---
## 💡 Praktické použití
### Use case 1: Správa home serveru pro rodinu
**Situace:** Máte doma Raspberry Pi nebo starý notebook jako server. Běží na něm Plex, Home Assistant, Pi-hole. Manželka/děti chtějí někdy restartovat službu, ale neumí terminál.
**Řešení s Portainer:**
- **Dashboard:** Přehled všech běžících služeb na jednom místě
- **Jednoduché ovládání:** Start/stop/restart jedním kliknutím
- **Logy:** Když něco nefunguje, snadno zjistíte proč
- **Uživatelé:** Vytvoříte účet pro rodinu s omezenými právy
- **Mobilní přístup:** Webové rozhraní funguje i na telefonu
**Výsledek:** Rodina může spravovat služby bez vašeho zásahu.
### Use case 2: Vývojové prostředí pro malý tým
**Situace:** Tým 3-5 vývojářů sdílí dev server. Každý potřebuje spouštět vlastní kontejnery, ale nechcete, aby si navzájem mazali služby.
**Řešení s Portainer:**
- **Týmy:** Každý vývojář má vlastní "environment"
- **Izolace:** Vývojář vidí jen své kontejnery
- **Templates:** Předpřipravené stack šablony (např. LAMP, MEAN)
- **Resource limits:** Omezení RAM/CPU per tým
- **Audit:** Kdo co kdy spustil nebo smazal
**Výsledek:** Sdílený server bez konfliktů a "kdo mi smazal databázi?".
### Use case 3: Klient-facing demo prostředí
**Situace:** Agentura potřebuje ukázat klientům rozpracované projekty. Každý klient má vlastní instanci aplikace.
**Řešení s Portainer:**
- **Stacks:** Jeden stack = jeden klient (app + db + redis)
- **Quick deploy:** Nový klient = deploy stacku z template
- **Subdomény:** `klient1.demo.agentura.cz`, `klient2.demo.agentura.cz`
- **Cleanup:** Po schválení projektu jednoduché smazání stacku
- **Snapshots:** Záloha stavu pro pozdější reference
**Výsledek:** Profesionální demo prostředí bez DevOps overhead.
### Use case 4: Monitoring a troubleshooting produkce
**Situace:** Máte 20+ kontejnerů v produkci. Něco začne padat, potřebujete rychle zjistit co.
**Řešení s Portainer:**
- **Health status:** Zelená/červená indikace stavu kontejnerů
- **Real-time logs:** Živé logy bez SSH přístupu
- **Console:** Přímý shell do kontejneru pro debugging
- **Stats:** CPU, RAM, network per kontejner
- **Events:** Timeline co se kdy stalo (restart, OOM kill...)
**Výsledek:** Rychlejší incident response, méně stresu při 3AM alertu.
### Use case 5: Učení Dockeru pro začátečníky
**Situace:** Učíte se Docker, ale příkazy v terminálu jsou matoucí. Nevíte, co vlastně běží a jak to souvisí.
**Řešení s Portainer:**
- **Vizualizace:** Vidíte kontejnery, images, volumes, networks
- **Experimenty:** Spusťte kontejner, podívejte se dovnitř, smažte ho
- **Inspect:** JSON konfigurace kontejneru pro pochopení
- **Učení:** Portainer ukáže, jaký příkaz by se spustil
- **Bezpečí:** Těžší udělat nevratnou chybu než v terminálu
**Výsledek:** Rychlejší pochopení Docker konceptů.
---
## 🆚 Portainer vs alternativy
| Nástroj | Licence | Kubernetes | UI/UX |
|---------|---------|------------|-------|
| **Portainer CE** | Zlib | ✅ | ⭐⭐⭐⭐⭐ |
| **Yacht** | MIT | ❌ | ⭐⭐⭐⭐ |
| **Lazydocker** | MIT | ❌ | ⭐⭐⭐ (TUI) |
| **Rancher** | Apache 2.0 | ✅ | ⭐⭐⭐⭐ |
| **Docker Desktop** | Proprietary | ✅ | ⭐⭐⭐⭐ |
> **Portainer** je nejlepší volba pro začátečníky i pokročilé. Yacht je jednodušší alternativa, Lazydocker pro terminálové puristy, Rancher pro Kubernetes-heavy prostředí.
---
## 🏁 Závěr a další kroky
- ✅ **Portainer umožňuje vizuální správu Docker kontejnerů.**
- ✅ **Zlib licence – plně open-source, Community Edition zdarma bez omezení.**
- ✅ **Tento návod ukazuje přístup přes HTTP (port 9000) jako nejjednodušší variantu pro lokální testování.**
- ✅ **Síť `digilifehub_network` je nyní standardem pro všechny kontejnery v tomto seriálu.**
👉 **Používáte Portainer, nebo preferujete čistě terminál?** 🚀
---
### ⏪ Související články ⏩
> **🔙 Předchozí článek:**
> [[2025-01-30 Úvod do práce s Dockerem|Úvod do práce s Dockerem]]
>
> **🔜 Následující článek:**
> [[2025-02-06 Traefik (Reverzní proxy pro Docker – správa subdomén a HTTPS)|Traefik (reverzní proxy)]]
#docker #portainer #osobniDigitalizace #digilifehub