ubuntu 和 ubuntu docker 镜像有什么区别?

ams*_*ams 6 linux docker

例如,使用 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)。

  • 默认软件包将在那里。由于软件包和文件结构是描述发行版的两个部分,是的,我认为您可以将其称为 Ubuntu。
  • 使用特定操作系统映像的目的是访问默认包、包管理器、使用的设计选择以及内核之上的行为。