在看了下面的图之后, 感觉docker就是运行在宿主机操作系统上的一个进程, 那么在docker中直接装了mysql, python之后, 这些软件是基于什么操作系统的? 是基于宿主机的系统? 但是貌似在windows上随便装一个redis镜像, 发现里面也不是宿主机的windows操作系统啊?
所以
问题1: docker本身是什么操作系统, 如果下载一个一个docker的redis镜像, 进去之后好像也能执行一些linux命令?
问题2: docker上装了一个比如centos操作系统之后, 那就是在宿主机的系统上, 运行了一个docker进程, 里面运行着centos系统, 这样理解对?
docker不是操作系统。你的那张图2写的很明白了,只有一个HOST OS。也就是说所有docker容器都是使用的宿主机的OS。这一点和Virtual Machine会虚拟化出Guest完全不同。你可以试一下,假设你的宿主机是Ubuntu 16.04的,内核版本是4.9。不管你运行哪个版本的ubuntu/centOS容器,看内核版本都是4.9。
共用Host OS是docker的特点!共用Host OS是docker的特点!共用Host OS是docker的特点!
相比Virtual Machine的虚拟化,Docker更轻,更小(毕竟不用再启动一套内核了嘛)
但当然也有限制,比如Virtual Machine可以 Windown on Linux或者相反,而Docker是不行的。
不对,使用的内核始终是HOST OS。docker daemon进程在宿主机上存在且唯一。你说的应该是启动CentOS Container,它会启动一个进程(对HOST来说是一个普通进程,对Container来说是init进程,这一点请查阅PID namespace)