关于Docker的概念

Docker是一个服务容器,所谓容器就是像你的原先部署tomcat时要运行在linux上,linux也就是一个类似的容器。我们可以把自已的服务放到docker中运行,docker会帮我们做底层对操作系统库等的调用。典型的我们可以在docker容器中运行一个mysql的服务。

从宏观意义上看docker容器:
image镜像:镜像应该和容器是紧密相关的,这里借助oop的概念,镜像和container的关系就好像类和类实例的关系,由一个image可以创建出很多容器。所以这里镜像是一个相对静态的概念,而容器则是一个动态概念,在实际中我们会使用dockerfile等工具对我们的项目生成相应的合适版本的部署环境的镜像,然后当项目release后就生成相应的部署镜像,通过docker的仓库实现快速部署、更新。

container:这是使用docker时必须也是最常打交道的一个概念,一个容器就是可以提供一定基础能力的并且有自己的资源隔离的运行环境。典型的我们可以创建一个linux镜像的容器,那么这个容器就包含了linux的基本功能,如文件系统、bash命令等,我们可以使用docker直接与这个容器交互。

docker-client:我们使用docker-client来和docker-daemon进行交互

docker-daemon:docker的守护进程,我们每用docker-client执行一个命令,docker-client会连接到这个docker-daemon,而这个daemon会根据执行的命令找到相应的handler,生成对应的job进行执行命令。

docker的意义:
传统部署模式(直接往linux扔):在传统模式下我们的生产环境和部署环境往往有所差异,所以在部署时会遇到新的问题。当服务模块较多时,很难管理模块,每次部署都要打包上传到部署服务器,在重新启动应用。并且内网的ip管理也会非常麻烦,还会造成资源、端口冲突。
docker部署:屏蔽了生产环境和部署环境的差异,环境也变得版本可控,而应用打包后直接push pull就可以动态更新服务,docker自带了多种网络连接模式,并且通过cgroups, chroot等技术实现了资源,最大限度的实现资源隔离,同时也使服务更加安全。

猜你喜欢

转载自blog.csdn.net/jsenht/article/details/80512940