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

时间:2018-05-27 11:52:10

标签: linux docker

使用docker似乎可以在同一台机器上运行多个操作系统,例如

docker run -it ubuntu:latest
root@09e498dae658:/#

docker run -it centos:latest
[root@8216b5141efc /]# 

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

由于无论使用什么图像,内核都是一样的,因此将docker视为能够在同一台机器上运行多个OS似乎是错误的。一些问题。

  • 执行docker run -it ubuntu:latest时ubuntu的哪些部分存在,哪些部分丢失?它可以被认为是Ubuntu吗?

  • 如果内核是相同的,无论使用什么图像,实际使用特定的os容器图像如ubuntu:latestcentos:latest是什么意思?

  • 是否有机制/进程用于确保os包与使用docker主机的内核兼容?

  • 最佳做法是在同一类型的内核上运行容器映像,例如运行ubuntu:最新的主机上有与容器映像相同版本的ubuntu吗?

1 个答案:

答案 0 :(得分:1)

你是对的,内核也是一样的。然而,发行版是内核中包含的软件集合,因此当在容器中运行centos vs ubuntu时,您只能访问ubuntu中包含的任何软件包。对我来说最明显的区别是默认的包管理器(yum vs apt)。

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