GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Kde jsou na hostiteli uloženy obrázky a kontejnery Docker?

Docker používá k reprezentaci běžících procesů dva druhy formátů – obrázky a kontejnery, přičemž oba ukládají data na disk vašeho počítače. Budeme mluvit o příkazech, které Docker poskytuje pro práci s daty, a o tom, jak je můžete použít pro přístup k souborům obrázků a kontejnerů.

Rozdíl mezi obrázky a kontejnery

Obrázky jsou to, co vytvoříte, když spustíte docker build; jsou uloženy v registru kontejnerů, jako je Docker Hub, a obsahují všechny soubory a kód pro spuštění aplikace. Můžete si je představit jako soubory ISO pro operační systém virtuálních strojů.

Kontejnery jsou vytvářeny z obrázků a jsou jako skutečný virtuální stroj, na kterém je aplikace spuštěna. Můžete mít několik kontejnerů spuštěných paralelně se stejným obrazem. Každý kontejner bude mít svůj vlastní systém souborů, volitelně vytvořený pomocí „připojení svazku“, která vážou data z hostitele do kontejneru.

Práce s úložištěm obrázků Docker

Obrázky ukládají celý obsah obrázku na váš disk. Kdykoli vytáhnete obrázek z internetu, stáhne se a uloží, obvykle navždy. Obrázky mohou být velmi velké, takže se to může časem sčítat, zejména u notebooků s omezeným úložištěm.

Pokud chcete k obrazovým datům přistupovat přímo, jsou obvykle uložena v následujících umístěních:

  • Linux:/var/lib/docker/
  • Windows:C:ProgramDataDockerDesktop
  • macOS:~/Library/Containers/com.docker.docker/Data/vms/0/

Dotýkat se těchto dat je však pravděpodobně špatný nápad . Úložiště Dockeru je komplikované a ve skutečnosti se velmi liší v závislosti na tom, jaký ovladač úložiště používá. Linux je nyní výchozí overlay2 na většině distribucí, které nejsou dostupné ani pro většinu koncových uživatelů. Nepořádek s tím může vést ke ztrátě dat.

Místo toho Docker poskytuje spravované příkazy pro zpracování obrázků. Všechny verze stažených obrázků můžete zobrazit jednoduchým příkazem:

docker image ls

Naštěstí to není tak špatné, jak to vypadá, protože obrázky Docker ukládají verze postupně. To znamená, že kdykoli si stáhnete novou verzi, nahradí pouze ty části, které byly změněny. Pokud často používáte stejný obrázek znovu a znovu, pravděpodobně nebudete mít příliš mnoho nákladů na úložiště.

Pokud však používáte mnoho různých obrázků, můžete mít uloženo mnoho obrázků, které už ani nepoužíváte. K jejich vyčištění poskytuje Docker vestavěný příkaz ke spuštění garbage collection. Tím se odstraní všechny obrázky, které nemají žádné odkazy, tj. neoznačené nebo neodkazované žádným kontejnerem.

docker image prune

Chcete-li odstranit všechny staré obrázky, které nepoužívají existující kontejnery, spusťte jej pomocí -a příznak:

docker image prune -a

To pokrývá hlavní případ použití, ale existuje několik dalších užitečných příkazů:

  • inspect :zobrazí informace o verzi kontejneru.
  • save & load :uloží a načte obrázky do tar archiv.
  • rm :přímo odstraní obrázek.
  • pull/push :aktualizace ze vzdáleného registru.
  • history :poskytuje seznam změn.

Práce s úložištěm kontejnerů Docker

Všechny informace o kontejneru můžete zobrazit pomocí docker inspect , který zobrazuje ovladače a data souborového systému, stejně jako všechna existující připojení a svazky.

docker inspect containerID

Kontejnery ukládají data dvěma způsoby. První je základní souborový systém, který je zkopírován z obrazu a je jedinečný pro každý kontejner. Docker používá „dolní adresář“ a „horní adresář“, což jsou samostatné vrstvy, které jsou sloučeny do jednoho hybridního souborového systému. Spodní adresář ukládá data základního obrazu a horní adresář ukládá vše, co bylo změněno za běhu, jako jsou soubory protokolu. V obou případech závisí jejich uložení na ovladači souborového systému, který je Docker nakonfigurován.

Dále jsou zde připojení , které vážou adresáře z hostitele do kontejneru, obvykle spravované automaticky pomocí funkce Docker s názvem svazky. Ty jsou uloženy normálně a jsou přístupné koncovým uživatelům. Pokud děláte nějakou práci, která vyžaduje úpravu dat na běžících kontejnerech, pravděpodobně byste měli upravovat svazek nebo připojení.

Přístup ke svazkům

K připojením Bind lze přistupovat přímo a jsou skvělou volbou, pokud chcete uložit konfiguraci, která se používá pro mnoho kontejnerů, nebo ukládat dostupná data, která přetrvají po restartování kontejneru.

Pokud chcete upravit data uložená ve svazcích, můžete tak učinit také. Jsou uloženy ve standardním formátu dostupném z Linuxu:

/var/lib/docker/volumes/volumeID/_data

ID svazku a informace můžete získat pomocí docker volume inspect .

Podobně jako obrázky mohou i svazky zatuchnout. Můžete je snadno odstranit, ale jejich zálohování a přenos je složitější proces.

docker volume prune

docker volume rm volumeID

Úprava souborového systému kontejneru Docker

Pokud chcete upravit souborový systém kontejneru, podobně jako obrázky, je to špatný nápad. Ve většině případů byste měli vytvořit novou verzi kontejneru s aktualizovanými změnami a nasadit aktualizaci.

Pokud však chcete provést nějaké rychlé změny bez zastavení kontejneru, nejlepším způsobem je jednoduše otevřít bash shell uvnitř kontejneru a upravit jej pomocí Dockeru. Je to velmi snadné – spusťte docker exec na kontejner a předejte „bash“ jako příkaz:

docker exec -it container bash

Odtud můžete volně používat normální příkazy Linuxu. Pokud to chcete provést vzdáleně, můžete do svého kontejneru nainstalovat server SSH a svázat port 22 s jiným portem na hostiteli.

SOUVISEJÍCÍ: Jak SSH do kontejneru Docker


Docker
  1. Hostujte více webových stránek na kontejnerech Docker

  2. Kde jsou uloženy soubory překladu?

  3. Rozdíl mezi CMD a ENTRYPOINT v Docker Images

  1. Jak používat obrázky, kontejnery a soubory Docker do hloubky

  2. Jak udržet kontejnery Docker v chodu, když se démon zastaví

  3. Kde jsou obrázky, kontejnery a svazky Dockeru uloženy v hostitelském systému Linux?

  1. Úvod do Docker Images

  2. Jak zkontrolovat stav a místo využívané obrázky a kontejnery

  3. Docker:Jsou odkazy Docker zastaralé?