Como posso efetuar login em uma instância do docker em execução?

1

cutucando docker para ver como funciona:

ubuntu@ip-172-31-14-19:~$ 
ubuntu@ip-172-31-14-19:~$ sudo docker run --net=host -d -t jmar71n/freepbx
2792243260a8de33d1a775d115188e601fc556e500b5ad085e09b4133d0f3d06
ubuntu@ip-172-31-14-19:~$ 
ubuntu@ip-172-31-14-19:~$ sudo docker run -it jmar71n/freepbx bash
root@46f45b8973c3:/# 
root@46f45b8973c3:/# exit
exit
ubuntu@ip-172-31-14-19:~$ 
ubuntu@ip-172-31-14-19:~$ sudo docker run -it jmar71n/freepbx bash
root@813557bf8922:/# 
root@813557bf8922:/# echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
root@813557bf8922:/# 

Agora, cada run é uma nova instância? É por isso que o prompt muda? O hostname é um ID exclusivo para cada run ?

Como eu logaria na primeira instância, com --net=host ?

Quando eu tento o sinalizador exec , ele falha:

ubuntu@ip-172-31-14-19:~$ 
ubuntu@ip-172-31-14-19:~$ sudo docker exec -it jmar71n/freepbx bash
Error: No such container: jmar71n/freepbx
ubuntu@ip-172-31-14-19:~$ 

Por quê? Qual é a maneira correta de fazer login nessa instância?

ubuntu@ip-172-31-14-19:~$ 
ubuntu@ip-172-31-14-19:~$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              20c44cd7596f        2 days ago          123MB
hello-world         latest              725dcfab7d63        2 weeks ago         1.84kB
jmar71n/freepbx     latest              8dda2a58fde1        19 months ago       1.54GB
ubuntu@ip-172-31-14-19:~$ 
    
por Thufir 20.11.2017 / 13:14

2 respostas

0

A execução do Docker cria um novo ambiente de instância ( para virtualizado) de uma determinada imagem.

Para efetuar login em uma determinada instância, é necessário executar o docker exec, mas é necessário executar o docker exec com o ID do container no qual você deseja efetuar login. Isso pode ser obtido a partir do comando:

docker ps -a

Depois, com o ID obtido, faça login no contêiner com:

docker exec -it <containerid> bash
    
por 20.11.2017 / 13:27
2

Quando você executa o comando run , você cria um novo contêiner a cada vez.

Você executa run com as opções -it , portanto, você está conectado ao contêiner docker e é por isso que seu prompt está mudando. Assim, todos os comandos que você executar com um novo prompt serão executados dentro do contêiner.

Quando você diz exit , finaliza seu processo ativo (bash desde que você o transmite como parâmetro durante a criação) e seu contêiner é interrompido, uma vez que ele vive apenas enquanto o processo principal com o PID 1 existir.

Para se conectar à instância, primeiro, execute-a com -d no modo desanexado e, em seguida, você pode executar docker attach . docs Você pode obter um ID do seu contêiner em docker ps -a . Mesmo com docker exec -it <containerID> bash .

    
por 20.11.2017 / 15:19