Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Execução do bash

Quando eu digito por exemplo docker run -it ubuntu bash, eu já não estou rodando e executando o bash? É necessário além disso rodar o docker exec?

3 respostas

Oi Felipe

Nem sempre você precisa do -it mesmo! Pra imprimir um acho "algum texto", por exemplo, você não precisaria. O comando acontece e sua iteração com o container acaba alí.

Mas faça um teste usando o exec para conectar no bash do seu container:

docker exec <container-id> bash

O que acontece? Em resumo, nada. O comando é executado, mas fica travado esperando algo acontecer. E você não consegue interagir com a instância, executar nenhum comando.

Faça o mesmo agora, usando o -it:

docker exec -it <container-id> bash

Algo como root@<container-id>:/# vai aparecer na tela pra você executar seus comandos lá.

Em resumo, o -i (iterative) mantém a entrada de dados aberta, para que você possa interagir, e o -t (tty) permite que você veja as interações no pseudo-terminal.

Faz sentido?

E aí Rodrigo, blz? Faz sim. Não sabia dessa do sem -it no exec que conecta mas fica travado.

Mas na verdade o que quis dizer foi que no comando docker run -it ubuntu bash ele cria e roda o container e no final já posso usar o bash estando já conectado no mesmo.

Porém na resposta do exercício ele diz pra executar e docker run -it ubuntu bash, depois o docker ps -a e finalmente o docker exec -it d98d5602dc26 bash. Pelo que entendi apenas o primeiro comando já seria necessário para se conectar no bash do container que já esta rodando, sendo os outros dois desnecessários.

solução!

Oi Felipe

tem razão, só o primeiro sem dúvida fará o trabalho.

Vou pedir para nossos moderadores/revisores testarem em outros sistemas operacionais, pra ver se não é nenhuma particularidade de algum deles ou de alguma versão específica do docker, mas acredito que não.

muito obrigado pelo aviso, logo devemos mudar por lá (;

um abraço