Android

Jak se připojit k dokovacímu kontejneru

Cesta na ISS, část druhá: Rendezvous a připojení

Cesta na ISS, část druhá: Rendezvous a připojení

Obsah:

Anonim

Připojení ke spuštěnému kontejneru Docker je užitečné, pokud chcete vidět, co se uvnitř kontejneru děje. Pokud kontejner Docker nefunguje podle očekávání, můžete se k kontejneru připojit nebo získat do kontejneru prostředí a spouštět příkazy jako ps nebo top . Můžete také zadat kontejner, nainstalovat nové balíčky a z něj vytvořit nový obrázek Docker.

V tomto tutoriálu vysvětlíme, jak se připojit k hlavnímu běžícímu procesu kontejneru a jak získat prostředí k běžícímu kontejneru.

Připojit k kontejneru

Ačkoli je možné spouštět více procesů v kontejneru, většina kontejnerových kontejnerů běží pouze v jednom procesu. Příkaz, který se provádí při spuštění kontejneru, je určen pomocí ENTRYPOINT a / nebo RUN .

Příkaz docker attach umožňuje připojit váš terminál k běžícímu kontejneru. To je užitečné, pokud chcete vidět, co je zapsáno na standardním výstupu v reálném čase, nebo interaktivně řídit proces.

Abychom lépe porozuměli tomu, jak funguje příkaz attach , spustíme nový odpojený kontejner Nginx pomocí oficiálního obrazu Nginx.

docker container run --name my_nginx -d -p 8080:80 nginx

Volba -p 8080:80 říká Dockerovi, aby svázal port 8080 kontejneru k portu 80 na hostitelském počítači.

Seznam kontejnerů zkontrolujte, zda je spuštěn kontejner „my_nginx“:

docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8e1c4974a8d8 nginx "nginx -g 'daemon of…" 3 minutes ago Up 2 seconds 0.0.0.0:8080->80/tcp my_nginx

Připojte se k kontejneru pomocí ID nebo názvu kontejneru:

docker container attach my_nginx

Výchozí příkaz obrazu nginx, který se provede při spuštění kontejneru, je nastaven na CMD . Při spuštění příkazu attach váš terminál připojí k procesu nginx .

Otevřete ve svém prohlížeči 127.0.0.1:8080 a můžete sledovat výstup procesu nginx v reálném čase.

192.168.33.1 - - "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36" "-" 192.168.33.1 - - "GET /favicon.ico HTTP/1.1" 404 555 "http://192.168.33.71:8080/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36" "-"

Chcete-li získat přístup k protokolům kontejnerů, měli byste raději použít příkaz docker logs .

Chcete-li se odpojit od kontejneru bez jeho zastavení, použijte CTRL-p CTRL-q . Stisknutím klávesy CTRL-c se kontejner zastaví.

Pokud spuštěné procesy, které připojujete, přijímají vstup, můžete mu poslat pokyny.

Získejte Shell do kontejneru

Příkaz docker exec umožňuje spouštění příkazů uvnitř běžícího kontejneru.

Nejprve spusťte nový kontejner, abyste viděli, jak funguje příkaz exec a jak může být použit pro vstup do obalu kontejneru. Použijeme oficiální obrázek MySQL:

docker container run --name my_mysql -d mysql

Tím vytvoříte kontejner s názvem „my_mysql“.

Chcete-li provést příkaz uvnitř kontejneru, spusťte následující příkaz:

docker container exec -it my_mysql ls /var

Volba -i představuje interaktivní a -t říká Dockerovi, aby přidělil pseudo TTY zařízení. Příkaz ls vypíše všechny soubory a adresáře v adresáři /var kontejneru:

backups cache lib local lock log mail opt run spool tmp

Chcete-li získat shell do kontejneru, tj. Vstoupit do kontejneru, spusťte novou relaci shellu provedením binárního shellu. Můžete použít sh , bash nebo jakýkoli jiný shell, který je součástí obrázku.

Příkaz níže vytvoří novou relaci Bash uvnitř kontejneru:

docker container exec -it my_mysql /bin/bash

Váš příkazový řádek se změní, což znamená, že nyní pracujete na obalu kontejneru.

Odtud můžete spouštět příkazy stejným způsobem jako na kterémkoli jiném serveru Linux. Chcete-li například získat seznam aktuálních proměnných prostředí typu env :

env

Výstup bude vypadat asi takto:

HOSTNAME=e0214d97e0fe MYSQL_ROOT_PASSWORD=my-secret-pw PWD=/ HOME=/root MYSQL_MAJOR=8.0 GOSU_VERSION=1.7 MYSQL_VERSION=8.0.17-1debian9 TERM=xterm SHLVL=1 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin _=/usr/bin/env

Závěr

Příkazy pro spuštění a docker attach umožňují připojení k běžícímu kontejneru. Chcete-li získat interaktivní obal do kontejneru, použijte příkaz exec ke spuštění nové relace prostředí. Příkaz attach připojí váš terminál k běžícímu kontejneru.

přístavní dělník