Docker学习第一天
1、容器和虚拟机的区别
虚拟机:是通过硬件模拟,运行一个虚拟机给它预留的资源全部被占完,每个虚拟机都是独立运行,可以使用不同的操作系统。
docker容器:
容器技术是和我们的宿主机共享硬件资源及操作系统可以实现资源的动态分配。
容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行
2、docker的特点
(1)效率高
用户可以用几分钟把自己的程序docker化,docker依赖于写时复制化(copy-on-write)模型,使用修改程序也非常迅速,可以达到“随心所致,代码即改”的境界。
(2)职责明确
使用docker开发人员只需要关心容器中运行的应用程序,而运维人员只需要关心如何管理容器。docker设计的目的就是要加强开发人员写代码的开发环境与应用程序要部署的环境的一致性。
(3)结构完整
docker的目标之一就是缩短代码从开发,测试到部署、上线的运行周期,让你应用程序具备可移植性,易于构建,并易于协作。
(4)契合微服务架构
docker还鼓励面向服务的体系架构和微服务架构。
2、docker的架构
(1)docker daemon(docker守护进程)
docker daemon是一个运行在宿主机(dock host)的后台进程,我们可通过docker客户端与之通信。
(2)Client(docker客户端)
docker客户端是docker的用户界面,它可以接受用户命令和配置标识,并与docker daemon通信,上图中docker build等都是docker的相关命令。
(3)images(docker镜像)
docker镜像是一个只读模板,它包含创建docker容器的说明。他和系统安装光盘有点像-我们使用系统安装光盘安装系统,同理,我们使用docker镜像运行docker镜像中的程序。
(4)Container(容器)
容器是镜像的可运行实例。镜像和容器的关系有点类似于面向对象中,类和对象的关系,我们可以通过docker API或者CLI命令来启动,移动,删除容器。
(5)Registry(仓库)
docker Registry是一个集中存储和分发镜像的服务,我们构建完docker镜像后,就可以在当前宿主机上运行,但如果想要在其他机器上运行这个镜像,我们就需要手动拷贝,此时我们可以借助docker Resgistry来避免镜像的手动拷贝。