androide

Come connettersi a un contenitore docker

Membuat booth container // container cafe PART 1

Membuat booth container // container cafe PART 1

Sommario:

Anonim

La connessione a un contenitore Docker in esecuzione è utile quando si desidera vedere cosa sta accadendo all'interno del contenitore. Se il contenitore Docker non funziona come previsto, è possibile collegarsi al contenitore o ottenere una shell al contenitore ed eseguire comandi come ps o top . Puoi anche inserire il contenitore, installare nuovi pacchetti e creare una nuova immagine Docker da esso.

In questo tutorial, spiegheremo come collegarsi al processo in esecuzione principale del contenitore e come ottenere una shell in un contenitore in esecuzione.

Collegare a un contenitore

Sebbene sia possibile eseguire più processi in un contenitore, la maggior parte dei contenitori docker esegue solo un singolo processo. Il comando che viene eseguito all'avvio di un contenitore viene specificato mediante l' ENTRYPOINT e / o RUN .

Il comando docker attach consente di collegare il terminale al container in esecuzione. Ciò è utile quando si desidera vedere ciò che è scritto nell'output standard in tempo reale o per controllare il processo in modo interattivo.

Per capire meglio come funziona il comando attach , eseguiamo un nuovo contenitore Nginx separato usando l'immagine Nginx ufficiale.

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

L'opzione -p 8080:80 indica a Docker di associare la porta 8080 del contenitore alla porta 80 sul computer host.

Elencare i contenitori per assicurarsi che il contenitore "my_nginx" sia in esecuzione:

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

Allegare al contenitore utilizzando l'ID o il nome del contenitore:

docker container attach my_nginx

Il comando predefinito dell'immagine nginx che viene eseguito quando si esegue il contenitore è impostato su CMD . Quando si esegue il comando attach il terminale si collega al processo nginx .

Apri 127.0.0.1:8080 nel tuo browser e puoi guardare l'output del processo nginx in tempo reale.

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" "-"

Per ottenere l'accesso ai registri del contenitore, è consigliabile utilizzare il comando docker logs della docker logs .

Per staccare dal contenitore senza arrestarlo, utilizzare la combinazione di tasti CTRL-p CTRL-q . Premendo CTRL-c arresta il contenitore.

Se i processi in esecuzione a cui si allega accetta input, è possibile inviare istruzioni ad esso.

Porta una shell in un contenitore

Il comando docker exec consente di eseguire comandi all'interno di un container in esecuzione.

Per vedere come funziona il comando exec e come può essere usato per inserire la shell del contenitore, per prima cosa, avvia un nuovo contenitore. Useremo l'immagine ufficiale di MySQL:

docker container run --name my_mysql -d mysql

Questo creerà un contenitore chiamato "my_mysql".

Per eseguire un comando all'interno del contenitore, eseguire il comando seguente:

docker container exec -it my_mysql ls /var

L'opzione -i sta per interattivo e -t dice a Docker di allocare un pseudo dispositivo TTY. Il comando ls elencherà tutti i file e le directory all'interno della directory /var del container:

backups cache lib local lock log mail opt run spool tmp

Per ottenere una shell nel contenitore, ovvero per entrare nel contenitore, avviare una nuova sessione della shell eseguendo il binario della shell. Puoi usare sh , bash o qualsiasi altra shell inclusa nell'immagine.

Il comando seguente creerà una nuova sessione Bash all'interno del contenitore:

docker container exec -it my_mysql /bin/bash

Il prompt dei comandi cambierà, indicando che ora stai lavorando sulla shell del contenitore.

Da qui, puoi eseguire i comandi come faresti su qualsiasi altro server Linux. Ad esempio, per ottenere un elenco delle variabili di ambiente correnti digitare env :

env

L'output sarà simile al seguente:

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

Conclusione

I comandi docker exec e docker attach consentono di connettersi a un container in esecuzione. Per ottenere una shell interattiva in un contenitore, utilizzare il comando exec per avviare una nuova sessione di shell. Il comando attach collega il terminale a un container in esecuzione.

scaricatore di porto