上回书说到物理机、虚拟机、容器之间的优缺点,其中容器里面有提到Docker,但Docker到底是什么呢?以下是我自己的理解;
一、Docker是什么呢?
为了了解到Docker是什么,我查询了大量资料,用专业的术语可以概述为:
Docker 是一个开源的容器管理引擎,由dotCloud(后改为Docker)公司创造,最开始是基于LXC,将LXC复杂的容器创建与使用简化为Docker的命令体系,之后又反向定义容器的实现标准,将底层实现都抽象化到Libcontainer接口,从此容器的实现方式变成了一种可变的方案;
Docker是使用沙箱机制,相互之间不会有任何接口,也几乎没有性能开销。不依赖于任何语言、框架、系统,可以让开发者将他们的应用以及依赖包打包到一个可移植的镜像中,以便于批量的部署在任何安装Docker引擎的服务器上;
总而言之,Docker就像是一个一个的集装箱,操作系统就相当于运输集装箱的货轮,集装箱中装着要交付的APP和运行环境,要迁移环境了,我只需要将集装箱搬过去就行了,这样搬运工的工作少了,开发、测试和生产环境也统一了。
二、Docker优点
Docker能得到广泛应用肯定具备一定的优点:
1、Docker定义了一种统一标准的打包格式,它隔离了APP与操作系统之间的直接联系,可批量移植到其他服务器上,简化了软件集成与交付的工作,实现了开发、测试、生产环境的统一;
2、Docker轻量以及灵活,可以在同一台服务器上部署多个容器;
3、Docker运行时性能高,启动、停止、重启等操作都是以秒或者毫秒为单位;
三、Docker技术架构
Docker采用C/S架构,一个完整的Docker由以下几个部分组成:
1、Docker Clients:Docker客户端。通过命令行或其他工具发送操作指令给Docker守护进程;
2、Docker daemon:Docker守护进程。作为服务端接受客户端的命令,管理镜像、容器、容器网络、数据卷等;
3、Docker Images:Docker镜像,用于创建Docker容器的模板,主要通过Dockerfile 文件定义;
4、Docker Containers:Docker容器,是镜像运行的实例;
5、Docker Registries:Docker仓库,用于存储镜像和管理镜像的版本
5、Docke Hosts:一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
6、Docker Machine:Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker;
四、Docker适用的场景
- 自动化测试、持续集成、交付、部署(CI/CD);
- 应用自动化打包、发布;
- 开发、测试和生产环境统一;
我是chililopp,正在学习k8s,之后如果有新的总结或者体验也会发出来,如果有说的不对的地方,还请指点,十分感谢阅读!