例如,使用 docker 似乎可以在同一台机器上运行多个操作系统
docker run -it ubuntu:latest
root@09e498dae658:/#
docker run -it centos:latest
[root@8216b5141efc /]#
Run Code Online (Sandbox Code Playgroud)
docker docs 声明 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
Run Code Online (Sandbox Code Playgroud)
由于无论使用什么映像,内核都是相同的,因此认为 docker 能够在同一台机器上运行多个操作系统似乎是错误的。一些问题。
执行docker run -it ubuntu:latest时 ubuntu 有哪些部分,缺少哪些部分?它可以被认为是Ubuntu吗?
如果无论使用什么图像,内核都是相同的,那么实际使用特定的 os 容器图像(如ubuntu:latest或 )有centos:latest什么意义?
是否有用于确保 os 包与使用 docker 主机的内核兼容的机制/过程?
在相同类型的内核上运行容器映像是否是最佳实践,例如在具有与容器映像相同版本的 ubuntu 的主机上运行 ubuntu:latest?
小智 4
你是对的,内核是一样的。然而,发行版是内核中包含的软件集合,因此当在容器中运行 centos 与 ubuntu 时,您只能访问 ubuntu 中包含的任何软件包。对我来说最明显的区别是默认的包管理器(yum 与 apt)。