docker镜像和容器的区别和解释
镜像是镜像,容器实例是容器实例。docker run命令将镜像A启动之后,在docker容器引擎中就会出现一个镜像A的容器实例,执行docker stop命令也只是关闭这个容器实例,它还在容器引擎中,可以执行docker start命令重启它。执行docker rm命令则会将容器实例从引擎中移除。
docker容器实例实际与宿主系统使用同一个内核,docker通过chroot和privo_root两个函数来模拟一个文件系统用于与宿主机文件系统进行区分。
因为与宿主机使用同一个内核,所以容器实例内的所有进程实际也是运行在宿主机上的进程,docker用namespace机制来将容器内的进程与宿主机上的进程进程进行隔离。
docker容器实例对硬件资源的使用也是直接使用宿主机的,所以要对docker容器实例占用的资源进行控制。docker通过CGroup机制来创建组并为每个组配置可用的计算资源,docker容器实例通过CGroup来控制自身的资源使用。
可以拿物理机来跟docker对比来加强对docker的理解:docker容器引擎就相当于没有安装系统的计算机