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

Jak spustit příkaz na spuštěném kontejneru Docker

Obvykle chcete, aby aplikace Docker byly plně obsaženy, ale někdy je pro účely vývoje nebo automatizace užitečné pracovat s kontejnery Docker, jako by existovaly virtuální počítače se systémem Linux. Docker poskytuje nástroje pro spouštění příkazů a dokonce i celých shellů uvnitř kontejnerů.

Spouštění příkazů v kontejnerech

Chcete-li spustit příkaz v kontejneru, budete potřebovat jeho ID kontejneru, pokud jste pro tento kontejner nenastavili konkrétní název. Toto je dlouhý hexadecimální řetězec, který můžete najít ve výpisu procesu Docker:

docker ps

Potom můžete použít exec -it příkaz ke spuštění uvnitř kontejneru. Například zobrazení výstupu souboru protokolu:

docker exec -it containerID tail /var/log/nginx/access.log

Skripty můžete také spouštět uvnitř kontejnerů:

docker exec -it containerID script.sh

-it příznaky jsou pro „interaktivní režim“ respektive TTY a používají se téměř neustále. Existuje několik dalších příznaků, které můžete použít:

  • --workdir nebo -w změní aktuální adresář před příkazem.
  • --detach , nebo -d , spustí příkaz na pozadí.
  • --env , nebo -e , nastaví proměnné prostředí před spuštěním.
  • --env-file dělá totéž, ale je bezpečnější pro manipulaci s tajemstvími.
  • --privileged spustí příkaz s rozšířenými oprávněními.
  • --user běží jako jiný uživatel

To samozřejmě funguje pouze na běžícím kontejneru. Pokud jste chtěli pozastavit kontejner za účelem údržby, budete muset buď nasadit aktualizace prostřednictvím nové verze bitové kopie, nebo provést změny v datech připojených ke svazku z hostitelského OS.

SSHing do kontejneru

Nejste omezeni na jednoduché příkazy, shell můžete skutečně otevřít spuštěním /bin/bash jako příkaz. Možná budete omezeni dostupnými nástroji – většina kontejnerů má poměrně barebonovou instalaci Linuxu – ale spouštění mnoha příkazů je mnohem jednodušší.

docker exec -it containerID /bin/bash

Toto je jednoduše shell přístupný z hostitele, který ve většině případů funguje dobře. Ale pokud chcete, můžete své kontejnery nastavit tak, aby byly zcela dostupné přes SSH jako VPS. Další informace o tomto nastavení si můžete přečíst v našem průvodci spuštěním služby SSH v kontejneru Docker.

SOUVISEJÍCÍ: Jak SSH do kontejneru Docker

Kopírování souborů do az kontejnerů

Spouštění příkazů pomocí exec -it funguje, ale mezi hostitelem a kontejnerem je stále vrstva, která brání snadnému skriptování. Za prvé, i když je snadné posílat příkazy do kontejneru, je těžší získat výstup ze souborového systému.

Zatímco můžete použít STDOUT z exec -it do jiných služeb v hostitelském OS, můžete také kopírovat soubory do a ze souborového systému kontejneru. Například vytažení souboru protokolu a jeho vložení na hostitele:

docker cp container:/var/log/nginx/example.log example.log

Nebo vytažení celých adresářů:

docker cp nginx:/etc/nginx/ nginxconfig/

Pokud to však děláte pravidelně, možná budete chtít zvážit použití vazby nebo připojení svazku, aby byla data přímo dostupná z hostitele.

SOUVISEJÍCÍ: Jak používat Docker Cp ke kopírování souborů mezi hostitelem a kontejnery


Docker
  1. Jak spustit program uvnitř kontejneru Docker?

  2. Jak spustit MySQL v kontejneru Docker

  3. Jak SSH do kontejneru Docker

  1. Jak poslat signál ke spuštění programu v kontejneru dockeru?

  2. Jak přidat uživatele do kontejneru Docker?

  3. Jak spustit úlohu cron uvnitř kontejneru dockeru

  1. Jak vložit SSH do běžícího kontejneru Docker a spustit příkazy

  2. Jak používat příkaz Docker Run s příklady

  3. Jak spustit příkaz uvnitř spuštěného kontejneru Systemd?