Android

Sådan opretter du forbindelse til en dockercontainer

Configure Port Forwarding to Remotely Access Your Synology NAS | Synology

Configure Port Forwarding to Remotely Access Your Synology NAS | Synology

Indholdsfortegnelse:

Anonim

Det er nyttigt at oprette forbindelse til en kørende Docker-container, når du vil se, hvad der sker inde i containeren. Hvis Docker-beholderen ikke fungerer som forventet, kan du fastgøre til containeren eller få en skal til beholderen og køre kommandoer såsom ps eller top . Du kan også gå ind i beholderen, installere nye pakker og opbygge et nyt Docker-billede ud fra den.

I denne tutorial vil vi forklare, hvordan man fastgør til beholderens vigtigste køreproces, og hvordan man får en skal til en kørende container.

Fastgør til en beholder

Selvom det er muligt at køre flere processer i en container, kører de fleste dockercontainere kun en enkelt proces. Den kommando, der udføres, når en container startes, specificeres ved hjælp af ENTRYPOINT og / eller RUN .

Kommandoen docker attach giver dig mulighed for at knytte din terminal til den kørende container. Dette er nyttigt, når du vil se, hvad der er skrevet i standardoutput i realtid, eller til at kontrollere processen interaktivt.

For bedre at forstå, hvordan attach kommando fungerer, lad os køre en ny løsrevet Nginx-container ved hjælp af det officielle Nginx-billede.

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

Indstillingen -p 8080:80 fortæller Docker at binde beholderport 8080 til port 80 på værtsmaskinen.

Angiv containerne for at sikre, at containeren “my_nginx” kø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

Fastgør til containeren ved hjælp af containerens ID eller navn:

docker container attach my_nginx

Standardkommandoen for nginx-billedet, der udføres, når du kører containeren, er indstillet til CMD . Når du kører attach din terminal til nginx processen.

Åbn 127.0.0.1:8080 i din browser, og du kan se output fra nginx-processen i realtid.

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 at få adgang til beholderlogfilerne skal du foretrække at bruge kommandoen docker logs .

For at løsne fra beholderen uden at stoppe den, skal du bruge CTRL-p CTRL-q tastkombinationen. Tryk på CTRL-c stopper beholderen.

Hvis de kørende processer, du er knyttet til, accepterer input, kan du sende instruktioner til det.

Få en skal til en container

Med docker exec kommandoen kan du køre kommandoer i en kørende container.

For at se, hvordan exec kommandoen fungerer, og hvordan den kan bruges til at komme ind i containerskallen, skal du først starte en ny container. Vi bruger det officielle MySQL-billede:

docker container run --name my_mysql -d mysql

Dette vil oprette en container med navnet "my_mysql".

For at udføre en kommando inde i containeren skal du køre følgende kommando:

docker container exec -it my_mysql ls /var

Indstillingen -i står for interaktiv, og -t fortæller Docker at tildele en pseudo TTY-enhed. Kommandoen ls viser alle filer og mapper i containers /var biblioteket:

backups cache lib local lock log mail opt run spool tmp

For at få et skal til beholderen, dvs. for at komme ind i containeren, skal du starte en ny shell-session ved at udføre skallen binært. Du kan bruge sh , bash eller enhver anden skal, der er inkluderet i billedet.

Kommandoen nedenfor opretter en ny Bash-session inde i containeren:

docker container exec -it my_mysql /bin/bash

Din kommandoprompt ændres, hvilket indikerer, at du nu arbejder på containerskallen.

Herfra kan du køre kommandoer på samme måde, som du ville gøre på enhver anden Linux-server. For eksempel at få en liste over de aktuelle miljøvariabler, type env :

env

Outputet ser sådan ud:

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

Konklusion

Kommandoen til docker exec og docker attach giver dig mulighed for at oprette forbindelse til en kørende container. For at få en interaktiv shell til en container skal du bruge exec kommandoen til at starte en ny shell-session. Kommandoen attach knytter din terminal til en kørende container.

havnearbejder