Como os programas rodam
Todo contêiner é apenas um programa em execução — o que chamamos de processo. Para realmente entender o Docker, você precisa de um pequeno punhado de palavras do dia a dia que descrevem como qualquer programa roda. Começamos com o que é um processo, para onde vai a saída de texto do programa (stdout
Um programa em execução é como um funcionário numa mesa: as configurações chegam na caixa de entrada dele (variáveis de ambiente); ele escreve anotações normais num quadro branco partilhado que todos podem ler (stdout) e os erros num quadro vermelho separado (stderr); as mensagens chegam até ele por uma caixa de correio numerada (uma porta); você pode tocar no ombro dele para pedir que encerre (um sinal); e quando ele sai, entrega um papel dizendo 'tudo certo' (0) ou 'houve um problema' (diferente de zero) — o código de saída.
- processo
- Um programa que está em execução no momento. O ficheiro no disco é apenas código à espera; quando você o inicia, a instância ativa em memória é chamada de processo. Um contêiner é essencialmente um desses processos.
- stdout / stderr
- Dois 'canais' pelos quais um programa escreve texto. stdout (saída padrão) é o canal de saída normal — as coisas que o programa quer que você veja. stderr é um canal separado para erros, para que você consiga manter as mensagens de problema separadas da saída normal.
- porta
- Um número que funciona como uma 'porta numerada' pela qual outros programas ou utilizadores alcançam um programa em execução. Por exemplo, um servidor web costuma escutar na porta 80 ou 8080, como uma caixa de correio numerada que todo mundo sabe usar.
- sinal
- Uma mensagem curta que o sistema operativo envia a um programa para pedir algo — mais frequentemente 'por favor, pare'. Quando você pressiona Ctrl-C no terminal, um sinal de parada desse tipo é enviado, e um programa bem-comportado se encerra de forma organizada.
- variável de ambiente
- Uma configuração no formato nome=valor entregue a um programa quando ele inicia, sem mudar o código dele. É assim que o mesmo programa recebe configurações diferentes em cada lugar — por exemplo, uma senha ou um número de porta — sem mexer no programa em si.