使用 Docker,似乎可以在同一台机器上运行多个操作系统,例如:
docker文档指出,Linux内核来自运行Linux容器的主机。因此,当我运行
docker run -it ubuntu:latest
root@09e498dae658:/#
docker run -it centos:latest
[root@8216b5141efc /]#
docker文档指出,Linux内核来自运行Linux容器的主机。因此,当我运行
cat /proc/version
命令时,可以得到与上述命令相同的输出结果。docker run -it ubuntu:latest
root@09e498dae658:/# cat /proc/version
Linux version 4.9.87-linuxkit-aufs (root@95fa5ec30613) (gcc version 6.4.0 (Alpine 6.4.0) ) #1 SMP Wed Mar 14 15:12:16 UTC 2018
docker run -it centos:latest
[root@8216b5141efc /]# cat /proc/version
Linux version 4.9.87-linuxkit-aufs (root@95fa5ec30613) (gcc version 6.4.0 (Alpine 6.4.0) ) #1 SMP Wed Mar 14 15:12:16 UTC 2018
由于内核相同,不管使用哪种镜像都能运行,因此认为docker可以在同一台机器上运行多个操作系统是错误的。以下是一些问题。
执行
docker run -it ubuntu:latest
时,ubuntu有哪些部分,哪些部分缺失?它是否可以被认为是Ubuntu?如果内核不受使用的镜像影响,那么使用特定操作系统的容器镜像(如
ubuntu:latest
或centos:latest
)的目的是什么?是否存在机制/进程来确保操作系统软件包与Docker主机使用的内核兼容?
最佳实践是在具有与容器镜像相同版本的Ubuntu的主机上运行容器镜像,例如在主机上运行
ubuntu:latest
?