Estou tentando verificar Ao escolher um arquivo de imagem de contêiner do Docker para o meu Ubuntu, o que preciso combinar entre eles?
No Lubuntu, um contêiner CentOS diz que é CentOS, por
$ sudo docker run centos bash -c "cat /etc/*-release "
CentOS Linux release 7.6.1810 (Core)
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
CentOS Linux release 7.6.1810 (Core)
CentOS Linux release 7.6.1810 (Core)
mas também diz que é o mesmo Ubuntu que o host:
$ sudo docker run centos bash -c "cat /proc/version"
Linux version 4.15.0-46-generic (buildd@lgw01-amd64-038) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #49-Ubuntu SMP Wed Feb 6 09:33:07 UTC 2019
$ cat /proc/version
Linux version 4.15.0-46-generic (buildd@lgw01-amd64-038) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #49-Ubuntu SMP Wed Feb 6 09:33:07 UTC 2019
Eu me pergunto por que os dois comandos diferem na distribuição do sistema operacional e na versão do kernel?
Um contêiner compartilha o mesmo kernel que seu host? Se sim, as versões do kernel devem ser as mesmas? Ao escolher um arquivo de imagem de contêiner do Docker para o meu Ubuntu, o que preciso combinar entre eles? diz "você não precisa combinar distribuições ou versões do kernel."
cat /proc/version
está mostrando a versão do kernel. Como os contêineres são executados no mesmo kernel que o host. É o mesmo kernel que o host.cat /etc/*-release
está mostrando a versão de distribuição. É a versão do sistema operacional, menos o kernel.Um container não é virtualização, é um sistema de isolamento que roda diretamente no kernel Linux. Ele usa os namespaces do kernel e cgroups. Espaços de nomes permitem redes separadas, ids de processo, pontos de montagem, usuários, nome de host, comunicação entre processos. cgroups permite limitar recursos.
Atualização: verifique esta resposta.