Android

Como conectar-se a um contêiner de docker

Utilizando MySQL com Docker

Utilizando MySQL com Docker

Índice:

Anonim

A conexão com um contêiner do Docker em execução é útil quando você deseja ver o que está acontecendo dentro do contêiner. Se o contêiner do Docker não funcionar como esperado, você poderá anexá-lo ou obter um shell no contêiner e executar comandos como ps ou top . Você também pode inserir o contêiner, instalar novos pacotes e criar uma nova imagem do Docker.

Neste tutorial, explicaremos como conectar-se ao processo principal de execução do contêiner e como obter um shell em um contêiner em execução.

Anexar a um contêiner

Embora seja possível executar vários processos em um contêiner, a maioria dos contêineres do Docker está executando apenas um único processo. O comando que é executado ao iniciar um contêiner é especificado usando as ENTRYPOINT e / ou RUN .

O comando docker attach permite conectar seu terminal ao contêiner em execução. Isso é útil quando você deseja ver o que está escrito na saída padrão em tempo real ou para controlar o processo interativamente.

Para entender melhor como o comando attach funciona, vamos executar um novo contêiner Nginx desanexado usando a imagem oficial do Nginx.

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

A opção -p 8080:80 informa ao Docker para ligar a porta 8080 do contêiner à porta 80 na máquina host.

Liste os contêineres para garantir que o contêiner “my_nginx” esteja em execução:

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

Anexe ao contêiner usando o ID ou nome do contêiner:

docker container attach my_nginx

O comando padrão da imagem nginx que é executada quando você executa o contêiner é definido como CMD . Quando você executa o comando attach seu terminal se conecta ao processo nginx .

Abra 127.0.0.1:8080 no seu navegador e você pode assistir a saída do processo nginx em tempo real.

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

Para obter acesso aos logs de contêiner, você deve usar o comando docker logs .

Para desanexar do contêiner sem pará-lo, use a combinação de teclas CTRL-p CTRL-q . Pressionar CTRL-c para o contêiner.

Se os processos em execução aos quais você está anexando aceitarem entrada, você poderá enviar instruções para ele.

Obter um shell para um contêiner

O comando docker exec permite executar comandos dentro de um contêiner em execução.

Para ver como o comando exec funciona e como ele pode ser usado para entrar no shell do contêiner, primeiro inicie um novo contêiner. Usaremos a imagem oficial do MySQL:

docker container run --name my_mysql -d mysql

Isso criará um contêiner chamado "my_mysql".

Para executar um comando dentro do contêiner, execute o seguinte comando:

docker container exec -it my_mysql ls /var

A opção -i significa interativa e -t diz ao Docker para alocar um pseudo dispositivo TTY. O comando ls listará todos os arquivos e diretórios dentro do diretório /var do contêiner:

backups cache lib local lock log mail opt run spool tmp

Para obter um shell no contêiner, ou seja, para entrar no contêiner, inicie uma nova sessão de shell executando o binário do shell. Você pode usar sh , bash ou qualquer outro shell incluído na imagem.

O comando abaixo criará uma nova sessão do Bash dentro do contêiner:

docker container exec -it my_mysql /bin/bash

Seu prompt de comando será alterado, indicando que agora você está trabalhando no shell do contêiner.

A partir daqui, você pode executar comandos da mesma maneira que faria em qualquer outro servidor Linux. Por exemplo, para obter uma lista das variáveis ​​de ambiente atuais, digite env :

env

A saída será mais ou menos assim:

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

Conclusão

Os comandos docker exec e docker attach permitem conectar-se a um contêiner em execução. Para obter um shell interativo em um contêiner, use o comando exec para iniciar uma nova sessão do shell. O comando attach anexa seu terminal a um contêiner em execução.

estivador