Jak řešit špatný výkon sdílených souborů u Dockeru

13. února 2020

Lang: cs en de es

Docker je primárně určen pro Linux. Díky rozšíření a otevřenosti se dostal i na Windows a Mac OS X. Na těchto operačních systémech však má Docker problém s rychlostí pokud jde o přístup k souborům. Jak to vyřešit? Jak výkon zlepšit?

Docker je nástroj na zefektivnění práce a řešení některých problémů. Zároveň však přináší nové problémy.
Spousta problémů však přináší neznalost nástroje, jeho špatné použití a neznalost světa Linuxu.

Jiné platformy

Pominu problém z neznalosti konfigurace linuxového serveru a tím spojeného (ne)správného fungování a bezpečnosti. Bez odborných znalostí Linuxu by nikdo neměl nasazovat Docker do produkčního prostředí.
Nejčastějším problémem uživatelů Windows a macOS u Dockeru je výkon sdílení souborů mezi hostitelem a kontejnerem. Docker je primárně vyvíjen pro Linux a tak Windows ani Mas OS X není ta správná platforma pro lidi co Docker používají.

Někteří uživatelé zvolili jednoduché a optimální řešení z Windows nebo macOS přešli na GNU/Linux. Ostatně Linux je pro vývojáře standard, protože to je pro ně ideální řešení.

Ne vždy však je uživatel ochotný ke změně. Jak řešit výkon sdílených souborů?

Jiné nástroje

Existují i jiné nástroje, které zefektivňují vývoj. Takže jedna z možností je změna těchto nástrojů.

VirtualBox

Například je možno použít nástroj pro plnou virtualizaci. A ve virtuálním stroji nainstalovat Linux a nástroje pro vývoj.
Ideálním nástroje může být VirtualBox, který je multiplatformní a tak ho můžete provozovat nejen na Linuxu, ale i na Windows a macOS

Docker však poskytuje jistou automatizaci instalace a konfigurace. I na toto jsou standardizované nástroje. Já například při správě linuxových serverů používám Ansible, jinou možností je Puppet a další.

Vagrant

Můžete použít nástroj Vagrant, který je přímo určen pro zajištění prostředí pro vývoj. Vagrant je nástroj, který vám připraví systém ve virtuálním stroji. Jako virtualizaci může používat právě VirtualBox nebo jinou lnou virtualizaci nebo i kontejnerovou virtualizaci.

Docker optimalizace sdílení souborů

Ale předpokládejme, že chcete zůstat u Dockeru a nepřidávat žádnou další ichnologii. Jak řešit pomalý výkon sdílených souborů?

Omezené sdílení

Úplně jednoduché řešení je nepřipojovat do Dockeru celý projekt, ale jen adresář se zdrojovými kódy, které potřebujete upravovat. Knihovny a skripty a data, které jsou zpracovávány v kontejneru, ponechte v něm.

Virtuální stroj + sdílení

Zprovozněte Linux na virtuálním stroji a v něm nainstalujte Docker. Následně můžete standardním nástrojem např pomocí SAMBy (sdílení disků) sdílet data z virtuálního stroje ven. Nebo z vašeho stroje připojit sdílený adresář do virtuálního stroje.

Docker jiné sdílení

Instalovat plně virtualizovaný stroj a v něm Linux a v něm řešit Docker se asi nikomu chtít také nebude. Ještě by tu byla možnost SAMBu nebo jiné sdílení zprovoznit v Dockeru. To je také možné, můžete SAMBU zprovoznit ve stejném Docker kontejneru - to však není správný postup v případě Dockeru. Můžete však SAMBu zprovoznit v samostatném kontejneru a mezi kontejnery sdílet data projektu a pomocí SAMBy data sdílet s vašim PC. (Jak zprovoznit aplikaci v jiném kontejneru viz článek Docker a Cron.)

Obdobným řešení by bylo použití sshfs, ftps, nfs nebo jiné.

Sync dat

Jiné řešení je nemít zdrojový kód aplikace kontejneru přes volume, ale automaticky synchronizovat data. Například Phpstorm umí synchronizovat data přes SSH do kontejneru při jakékoliv změně. Umí detekovat i external changes, takže při composer update/install není třeba dělat build celého kontejneru znovu. Je to rychlé a funguje spolehlivě a jednotně na všech platformách.

Školení

Firmy, které chtějí zefektivnit svůj provoz, těm mohu Docker doporučit. A formou školení technologie Docker a následné spolupráce společně Docker zavedeme do firmy.

Zajímavé zdroje

Docker na MacOS a nastavení cache

Články na podobné téma

VMware vs Proxmox: porovnání výkonu
GitLab CI/CD: automatizace testů a nasazení aplikace
Migrace VPS z VMware na Proxmox
Změna licencování VMware
Provoz Microsoft SQL serveru na Linuxu
Zálohování: Proxmox backup server
Linux jako router a firewall
Jak náhrát docker image do Docker Registry
Linux: Logical Volume Management
Linuxový softwarový RAID
Provoz webové aplikace za proxy
Migrace mail schránek
Docker multistage build
Zálohování dat zapnutím počítače
Podman
Import Windows do virtualizace Proxmox
Docker a PHP mail
Virtualizace Proxmox
Docker a Cron
Lenovo ThinkPad X1 Carbon: zprovoznění LTE modemu EM7544
Yocto Project: Build vlastního operačního sytému pro embedded zařízení
Příprava linuxového serveru pro běh webové aplikace v jazyce Python
Jak začít správně používat Docker
Instalace Linuxu na dedikovaný server HPE ProLiant DL320e
Jak provést zátěžový test webové aplikace
Proč používat filesystém JFS
Jak bootovat z 4TB disku s GTP pomocí UEFI
Jak nainstalovat operační systém Mageia Linux bez DVD mechaniky
Souborový systém Btrfs
Raspberry PI
Jak zprovoznit vzdálené přehrávání přes síť na televizi s DLNA
Upgrade Mandriva Linuxu za běhu
Poznámky ke GNU/Linux
WINE - spouštíme programy pro Windous pod Linuxem
Operační systém GNU/Linux

Odběr novinek

Pokud máte zájem dostávat příležitostně na email novinky.
Můžete se vyplněním emailu registrovat k odběru novinek.


+