Vejo que muitas imagens do docker no repositório do docker são feitas com uma base do Ubuntu.
O que isso significa? Cada contêiner compacta uma versão simplificada do kernel do Linux?
Os contêineres ficam em cima de seus próprios grãos? Mas achei que os contêineres compartilhavam o kernel do host (que em alguns casos é o boot2docker, uma compilação personalizada do Tiny Core Linux e, em outros, algo como o CoreOS).
EDIT: Esclarecendo um pouco a pergunta. Sim, eu sei que o docker é um contêiner de processo, não uma VM completa. Mas como existem contêineres "Ubuntu" no registro oficial do docker hub e outros sistemas operacionais como o CentOS, o que significa executar o Ubuntu em um contêiner?
Resposta: Ahh, isso me ocorreu. São os processos de terra do usuário do Ubuntu, contendo o apt-get e outros processos de configuração para uma compilação específica do Ubuntu. Da mesma forma para o CentOS. O Docker não é um processo único, apenas uma entrada. Portanto, para essas distribuições, o ponto de entrada é algum tipo de processo init que gera outros processos.
Respostas:
O Docker usa o kernel do SO host, não há kernel personalizado ou adicional dentro do contêiner. Todos os contêineres executados em uma máquina estão compartilhando esse kernel "host".
A Wikipedia diz http://en.wikipedia.org/wiki/Docker_(software) que
cgroups, namespaces e LXC são recursos do kernel do Linux para isolar grupos de processos; ainda existe um único kernel, um planejador único e uma instância do gerenciador de memória do kernel.
O Boot2docker e o CoreOS são apenas distribuições Linux leves com alguns kernel do host; eles podem ser usados para carregar contêineres do Docker.
http://boot2docker.io/
http://en.wikipedia.org/wiki/CoreOS
fonte
FROM
uma imagem base do Ubuntu quando o host já está executando o Ubuntu. Para responder à pergunta, você precisa explicar o que é uma imagem de base.Em quase todos os casos, o kernel do sistema operacional host é compartilhado. Para executar um kernel diferente, você precisa usar a virtualização. Isso é raro e usado apenas quando necessário devido à degradação do desempenho.
"O contêiner do Docker Engine compreende apenas o aplicativo e suas dependências. Ele é executado como um processo isolado no espaço do usuário no sistema operacional host, compartilhando o kernel com outros contêineres. Dessa forma, desfruta dos benefícios de alocação e isolamento de recursos das VMs, mas é muito mais portátil e eficiente. "
Isso pode ajudar a explicar como funciona:
Fonte: https://www.docker.com/whatisdocker/
fonte