docker -i
fornece um shell não interativo ( -i
significa interativo para o docker, não para o bash dentro dele).
Você pode verificar isso executando o seguinte comando (variável $-
includes i
se o bash for interativo):
echo $- |grep i && echo i am interactive || echo i am non-interactive
Este bash não interativo não exibe o prompt de comando, é difícil determinar quando o comando de longa execução terminou seu trabalho, você não pode usar o histórico de comandos, e programas baseados em tty parecem uma bagunça.
Teste vim
(reclama sobre Output/Input is not a terminal
, parece e se comporta de maneira estranha)
ou algum jogo parecido com rogue
(por exemplo, crawl
simplesmente se recusa a trabalhar).
Por outro lado, docker -it
fornece um shell interativo comum com prompt de comando (que você pode ajustar via $PS1
)
e histórico de comandos (incluindo Ctrl-r
).
Quando um comando termina, é claramente visível por causa de programas que exigem prompt e tty funcionam bem.
Então, se você for digitar comandos manualmente no shell, use docker -it
.