Ubuntu和Ubuntu Docker镜像之间有什么区别?

7
使用 Docker,似乎可以在同一台机器上运行多个操作系统,例如:
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:latestcentos:latest)的目的是什么?

  • 是否存在机制/进程来确保操作系统软件包与Docker主机使用的内核兼容?

  • 最佳实践是在具有与容器镜像相同版本的Ubuntu的主机上运行容器镜像,例如在主机上运行ubuntu:latest


1
对于那些在问题发布后1秒内就给出负评的人,请解释一下问题出了什么问题? - ams
1
一个操作系统不仅仅是内核,它还包括用户空间的所有内容。 - Mat
Stack Overflow是一个关于编程和开发问题的网站。这个问题似乎不属于编程或开发范畴。请参阅帮助中心中的我可以在这里问什么样的问题。也许超级用户Unix&Linux Stack Exchange更适合提问。 - jww
1个回答

4

你说得没错,内核是一样的。然而,发行版是内核所附带的软件集合。因此,在容器中运行CentOS和Ubuntu时,您只能访问包含在Ubuntu中的任何软件包。对我来说,最明显的区别将是默认的软件包管理器(yum与apt)。

  • 默认的软件包将会存在。由于软件包和文件结构是描述发行版的两个部分,所以我认为可以称之为Ubuntu。
  • 使用特定的操作系统镜像的目的是获得默认软件包、软件包管理器、设计选择和内核上的行为。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接