Uruchamianie środowisk dynadock + Caddy w izolowanych VM tworzonych przez libvirt/KVM.
Project description
dockvirt
Twórz lekkie, izolowane środowiska deweloperskie za pomocą jednego polecenia.
dockvirt to narzędzie CLI, które automatyzuje proces tworzenia maszyn wirtualnych (VM) z wykorzystaniem libvirt/KVM. Umożliwia błyskawiczne uruchamianie aplikacji w kontenerach Docker, z prekonfigurowanym reverse proxy (Caddy), w pełni izolowanym od Twojego systemu operacyjnego.
🤔 Dlaczego dockvirt?
Pomysł na dockvirt narodził się z potrzeby stworzenia prostego, ale potężnego narzędzia do zarządzania środowiskami deweloperskimi, które łączyłoby zalety konteneryzacji (Docker) i wirtualizacji (KVM). Celem było stworzenie rozwiązania, które:
- Zapewnia pełną izolację: W przeciwieństwie do samego Dockera,
dockvirturuchamia kontenery wewnątrz w pełni odizolowanej maszyny wirtualnej, co eliminuje problemy z konfliktami zależności, portów czy konfiguracji sieciowej na maszynie hosta. - Jest lekkie i szybkie: Dzięki wykorzystaniu
cloud-initi obrazów chmurowych, proces tworzenia i konfiguracji VM jest zautomatyzowany i trwa zaledwie chwilę. - Daje pełną kontrolę: W odróżnieniu od narzędzi takich jak Multipass,
dockvirtopiera się na standardowym ekosystemie libvirt, dając zaawansowanym użytkownikom pełną kontrolę nad każdym aspektem maszyny wirtualnej.
🆚 Porównanie z innymi narzędziami
| Narzędzie | Główne zalety | Główne wady |
|---|---|---|
| dockvirt | Pełna izolacja (VM), prostota, automatyzacja | Wymaga KVM (tylko Linux) |
| Docker Compose | Szybkość, prostota, duża popularność | Brak pełnej izolacji od systemu hosta |
| Vagrant | Wsparcie dla wielu providerów, elastyczność | Wolniejszy start, bardziej złożona konfiguracja |
| Multipass | Bardzo prosty w użyciu, dobra integracja z Ubuntu | Ograniczona kontrola, silne powiązanie z Canonical |
🚀 Główne funkcje
- Automatyzacja od A do Z: Tworzenie, konfigurowanie i usuwanie VM za pomocą prostych poleceń.
- Uniwersalność: Działa na popularnych dystrybucjach Linuksa (Ubuntu, Fedora i inne).
- Elastyczność: Pełna kontrola nad konfiguracją VM (RAM, CPU, dysk).
- Prekonfigurowane środowisko: Automatyczna instalacja Dockera i Caddy wewnątrz VM.
- Izolacja: Każde środowisko działa w oddzielnej maszynie wirtualnej.
🔧 Wymagania
- System operacyjny Linux z obsługą KVM.
- Zainstalowane pakiety:
qemu-kvm,libvirt-daemon-system,virt-manager,cloud-image-utils. - Obraz chmurowy (
.qcow2) dla wybranej dystrybucji (np. Ubuntu 22.04, Fedora Cloud Base).
⚙️ Instalacja
-
Zainstaluj z PyPI:
pip install dockvirt
-
Lub zainstaluj z repozytorium (dla deweloperów):
git clone https://github.com/dynapsys/dockvirt.git cd dockvirt make install
🏗️ Jak to działa?
Przepływ procesu tworzenia VM
graph TD
A[dockvirt up] --> B{Czy istnieje config.yaml?}
B -->|Nie| C[Utwórz domyślny config.yaml]
B -->|Tak| D[Wczytaj konfigurację]
C --> D
D --> E{Czy obraz OS istnieje lokalnie?}
E -->|Nie| F[Pobierz obraz z URL]
E -->|Tak| G[Użyj lokalnego obrazu]
F --> G
G --> H[Renderuj szablony cloud-init]
H --> I[Utwórz ISO cloud-init]
I --> J[Utwórz dysk VM z backing file]
J --> K[Uruchom virt-install]
K --> L[VM gotowa z Docker + Caddy]
Architektura systemu
┌─────────────────────────────────────────────────────────────────┐
│ HOST SYSTEM │
├─────────────────────────────────────────────────────────────────┤
│ dockvirt CLI │
│ ├── config.py (zarządzanie konfiguracją) │
│ ├── image_manager.py (pobieranie obrazów OS) │
│ ├── vm_manager.py (tworzenie/usuwanie VM) │
│ └── cli.py (interfejs użytkownika) │
├─────────────────────────────────────────────────────────────────┤
│ ~/.dockvirt/ │
│ ├── config.yaml (konfiguracja domyślna) │
│ ├── images/ (cache obrazów OS) │
│ └── vm_name/ (pliki cloud-init dla każdej VM) │
├─────────────────────────────────────────────────────────────────┤
│ libvirt/KVM │
│ ├── virt-install (tworzenie VM) │
│ ├── virsh (zarządzanie VM) │
│ └── qemu-kvm (wirtualizacja) │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ VIRTUAL MACHINE │
├─────────────────────────────────────────────────────────────────┤
│ Ubuntu/Fedora OS + cloud-init │
│ ├── Docker Engine (automatycznie zainstalowany) │
│ └── docker-compose (uruchamia kontenery) │
│ ├── Caddy (reverse proxy na porcie 80/443) │
│ └── App Container (Twoja aplikacja) │
└─────────────────────────────────────────────────────────────────┘
⚙️ Konfiguracja
dockvirt automatycznie tworzy plik konfiguracyjny ~/.dockvirt/config.yaml przy pierwszym uruchomieniu:
default_os: ubuntu22.04
images:
ubuntu22.04:
url: https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img
variant: ubuntu22.04
fedora36:
url: https://download.fedoraproject.org/pub/fedora/linux/releases/36/Cloud/x86_64/images/Fedora-Cloud-Base-36-1.5.x86_64.qcow2
variant: fedora-cloud-base-36
🖥️ Użycie
Teraz używanie dockvirt jest znacznie prostsze - nie musisz już podawać ścieżek do obrazów:
# Użyj domyślnego OS (ubuntu22.04)
dockvirt up \
--name my-app \
--domain my-app.local \
--image nginx:latest \
--port 80
# Lub wybierz konkretny OS
dockvirt up \
--name fedora-app \
--domain fedora-app.local \
--image httpd:latest \
--port 80 \
--os fedora36
Po utworzeniu VM, dockvirt wyświetli jej adres IP. Dodaj go do pliku /etc/hosts:
<adres_ip> my-app.local
📚 Przykłady użycia
Przygotowaliśmy kilka praktycznych przykładów, które pomogą Ci zacząć:
🛠️ Development
Repozytorium zawiera Makefile, który ułatwia proces deweloperski. Zobacz plik CONTRIBUTING.md, aby dowiedzieć się, jak wnieść wkład w rozwój projektu.
✍️ Autor
Tom Sapletta - Doświadczony programista i entuzjasta otwartego oprogramowania. Pasjonat automatyzacji i tworzenia narzędzi ułatwiających pracę deweloperom.
📜 Licencja
Projekt jest udostępniany na licencji Apache 2.0. Szczegóły znajdują się w pliku LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dockvirt-0.1.0.tar.gz.
File metadata
- Download URL: dockvirt-0.1.0.tar.gz
- Upload date:
- Size: 15.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47ddcc18e6c6ce4fefab9019e367c47ab5f33e2d665054285007e65389f77d92
|
|
| MD5 |
5d17df3d5801f682c2de146002872afd
|
|
| BLAKE2b-256 |
63e378fbe0be5a3eaa80352e24169893fdfddb342f814907a017a1c61840c04c
|
File details
Details for the file dockvirt-0.1.0-py3-none-any.whl.
File metadata
- Download URL: dockvirt-0.1.0-py3-none-any.whl
- Upload date:
- Size: 13.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c097cdcd71c850ed5e11d8e437ad2b941ca2d100540b119b7d348b36baacd3c4
|
|
| MD5 |
6b290b91c86539150571077681747e4c
|
|
| BLAKE2b-256 |
47b2beca213c1a91fefa2eddbc42dda1093136c5f37fc53680caf3a330d63174
|