Úvod
Docker umožňuje uživatelům spouštět různé aplikace izolované od hostitelského počítače, aniž by pro ně museli mít samostatné operační systémy. Místo toho nainstalujete a spravujete kontejnery Docker pomocí kontejnerového jádra (démon Docker), který má podobnou roli jako hypervizor pro virtuální počítače.
Jakmile začnete Docker používat, budete čelit situacím, kdy potřebujete vědět,jak sdílet data mezi kontejnery.
Předpoklady
- Uživatel s právy sudo
- Přístup k terminálu/příkazovému řádku
- Stabilní verze Dockeru
Krok 1:Vytvořte kontejner s objemem dat
Chcete-li předvést, jak sdílet mezi dvěma kontejnery, musíte vytvořit kontejner (Container1 ) s objemem dat (datavolume1 ) můžete později sdílet.
1. Nejprve vytvořte nezávislý svazek, který budete sdílet mezi dvěma kontejnery Docker:
docker volume create --name DataVolume1
2. Poté vytvořte kontejner Docker a pojmenujte jej Container1 s připojeným datovým objemem spuštěním následujícího příkazu:
docker run -ti --name=Container1 -v DataVolume1:/datavolume1 ubuntu
2. Dále vytvořte soubor v datovém svazku a přidejte do něj nějaký text:
echo "Share this file between containers" > /datavolume1/Example.txt
3. Opusťte kontejner příkazem:exit
Krok 2:Vytvořte nový kontejner a přidejte jej do objemu dat
Dále vytvořte nový kontejner (Container2 ) který bude sdílet soubory s Container1 .
1. Vytvořte Kontejner2 a připojte svazky z Container1 :
docker run -ti --name=Container2 --volumes-from Container1 ubuntu
2. Přidejte text z Kontejneru2 ukázat, že oba kontejnery mohou zapisovat do DataVolume1 :
echo "This will also appear in DataVolume1" >> /datavolume1/Example.txt
3. Chcete-li opustit Kontejner2 použijte příkaz:exit
Krok 3:Ověřte, že můžete sdílet data mezi kontejnery Docker
1. Restartujte Container1 pro kontrolu změn objemu dat:
docker restart Container1
2. Potvrďte, že oba kontejnery mohou číst a zapisovat do stejného objemu dat a že text, který jste napsali do Container2 se zobrazí v DataVolume1 :
cat /datavolume1/Example.txt
Pokud byl text úspěšně přidán do datového svazku, výstup by měl zobrazovat následující:
Share this file between containers
This will also appear in DataVolume1
3. Pro dokončení opusťte kontejner pomocí příkazu:exit
Volitelné:Vytvořte svazky pouze pro čtení
Vytvoření kontejneru Docker „pouze pro čtení“ zabrání ostatním v provádění jakýchkoli změn v datech a umožňuje jim pouze prohlížet soubory.
Přidejte :ro
na název kontejneru, který by měl být sdílen, ale neměl by se měnit.
V následujícím příkladu Container2 bude moci vidět soubory z Kontejneru1 ale nebude je moci upravovat.
docker run -ti --name=Container2 --volumes-from Container1:ro ubuntu
Chcete-li zkontrolovat, zda Kontejner2 má oprávnění pouze pro čtení, zkuste odebrat ukázkový soubor z Kontejneru1 spuštěním příkazu:
rm /datavolume1/Example.txt
Výstup by měl ukazovat, že jste úspěšně vytvořili soubor pouze pro čtení. V důsledku toho mohou ostatní kontejnery přistupovat k datům a zobrazovat je, ale nemohou je nijak přispívat ani je měnit.