docker系列1-简介
简介
docker是一种容器技术,docker可以将应用程序和基础设施层隔离,并且可以将基础设施当做程序一样进行管理。传统的部署项目方法是在一台服务器上准备好linux基础环境、配置jdk、准备项目包、设置好相关配置,需要扩展的话就得重新在另一台服务器上执行重复步骤。使用docker的话就可以将linux、jdk等这种基础环境甚至需要部署的项目本身抽离成一个整体(image)。需要部署时利用image创建一个实例(Container)即可。类似java文件和java对象的关系。
三种部署方式对比
图1:应用部署在物理机上,成本高、部署慢、浪费资源、硬件限制、不利于迁移扩展
图2:利用虚拟机部署
优点:相对容易扩展
缺点:虚拟机占用过多资源,可能虚拟机占用的资源远大于应用程序需要的资源
图3:利用docker容器部署
应用通用的基础环境都抽离到了docker层中,资源利用更充分。例如部署新的应用就不用再重复配置类似jdk这种基础服务了
Docker架构
1、Docker daemon
监听docker api请求并管理docker对象,还可以与其他守护进程通信以管理docker服务。是一个运行在宿主主机的后台进程
2、Client(Docker客户端)
用户交互端,比如图中执行docker run 就会与docker daemon通信
3、Registry
可以理解为类似maven仓库的存在,用来存放各种docker image。比如Docker Hub公共仓库,国内阿里云的regs(容器镜像服务),或者自己利用harbor搭建私有仓库
4、Images(Docker镜像)
Docker镜像是一个只读模板,它包含创建Docker容器的说明。类似于运行程序的模板文件,image可以类比为java文件,new出来的对象类比为Container。
5、Container(容器)
容器是镜像的可运行实例。镜像和容器的关系有点类似于面向对象中,类和对象的关系。我们可通过Docker API或者CLI命令来启停、移动、删除容器。