Android

Slik kobler du til en dockercontainer

Docker Networking Tutorial | Container Network Model | Docker Tutorial For Beginners | Simplilearn

Docker Networking Tutorial | Container Network Model | Docker Tutorial For Beginners | Simplilearn

Innholdsfortegnelse:

Anonim

Det er nyttig å koble til en kjørende Docker-container når du vil se hva som skjer inne i containeren. Hvis Docker-beholderen ikke fungerer som forventet, kan du feste til beholderen eller få et skall til beholderen og kjøre kommandoer som ps eller top . Du kan også gå inn i beholderen, installere nye pakker og bygge et nytt Docker-bilde fra den.

I denne opplæringen skal vi forklare hvordan du kan feste til beholderens viktigste løpsprosess og hvordan du får et skall til en løpende container.

Fest til en beholder

Selv om det er mulig å kjøre flere prosesser i en container, kjører de fleste dockercontainere bare en enkelt prosess. Kommandoen som utføres når du starter en container spesifiseres ved å bruke ENTRYPOINT og / eller RUN instruksjonen.

Kommandoen for docker attach lar deg knytte terminalen til den kjørende containeren. Dette er nyttig når du vil se hva som er skrevet i standardutgangen i sanntid, eller for å kontrollere prosessen interaktivt.

For bedre å forstå hvordan attach kommandoen fungerer, la oss kjøre en ny løsrevet Nginx-beholder ved hjelp av det offisielle Nginx-bildet.

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

Alternativet -p 8080:80 forteller Docker om å binde port 8080 på beholderen til port 80 på vertsmaskinen.

Liste containere for å sikre at “my_nginx” containeren kjører:

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

Fest til beholderen ved å bruke beholderens ID eller navn:

docker container attach my_nginx

Standardkommandoen for nginx-bildet som utføres når du kjører containeren, er satt til CMD . Når du kjører attach kommandoen, kobles terminalen din til nginx prosessen.

Åpne 127.0.0.1:8080 i nettleseren din, og du kan se utdataene fra nginx-prosessen i sanntid.

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

For å få tilgang til beholderloggene, bør du foretrekke å bruke docker logs kommandoen.

For å løsne fra beholderen uten å stoppe den, bruk CTRL-p CTRL-q tastekombinasjonen. Ved å trykke på CTRL-c stoppes beholderen.

Hvis de løpende prosessene du knytter til, godtar innspill, kan du sende instruksjoner til det.

Få et skall til en beholder

docker exec kommandoen lar deg kjøre kommandoer inne i en kjørende container.

For å se hvordan exec kommandoen fungerer og hvordan den kan brukes til å gå inn i containerskallet, starter du først en ny container. Vi bruker det offisielle MySQL-bildet:

docker container run --name my_mysql -d mysql

Dette vil opprette en beholder med navnet “my_mysql”.

Kjør følgende kommando for å utføre en kommando inne i beholderen:

docker container exec -it my_mysql ls /var

Alternativet -i står for interaktiv, og -t forteller Docker å tildele en pseudo TTY-enhet. Kommandoen ls viser alle filer og kataloger i containerkatalogen /var :

backups cache lib local lock log mail opt run spool tmp

For å få et skall til beholderen, dvs. å gå inn i beholderen, start en ny skalløkt ved å utføre skallet binært. Du kan bruke sh , bash eller et hvilket som helst annet skall som er inkludert i bildet.

Kommandoen nedenfor vil opprette en ny Bash-økt i beholderen:

docker container exec -it my_mysql /bin/bash

Kommandoprompten din vil endres, noe som indikerer at du nå jobber med containerskallet.

Herfra kan du kjøre kommandoer på samme måte som på en hvilken som helst annen Linux-server. For å få en liste over gjeldende miljøvariabler, for eksempel, skriver du env :

env

Utgangen vil se slik ut:

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

Konklusjon

Kommandoer for docker exec og docker attach lar deg koble til en kjørende container. For å få et interaktivt skall til en container, bruker du exec kommandoen for å starte en ny skalløkt. attach kommandoen fester terminalen din til en kjørende container.

Docker