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?
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?
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.
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