软件开发和测试以及部署最麻烦的问题是环境配置。
- 相同的配置可能需要做好几次,比如大规模部署,或者针对不同目的的部署。
- 因为各方面原因可能配置出来结果不同,例如机器配置不同,操作系统不同等
- 节约硬件资源,充分使用。
模拟一个完整的操作系统在真实主机上运行
- 资源占用多;
- 冗余步骤多;包含了除了目标应用运行环境外的其他功能
- 启动慢
Linux 容器(Linux Containers,缩写为 LXC)。
Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。或者说,在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。
由于容器是进程级别的,相比虚拟机有很多优势。
- 启动快
- 资源占用少
- 体积小
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。
Docker用途- 提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。
- 提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。
- 组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。
Docker 是一个客户端-服务器(C/S)架构程序。
- Client 客户端: 发出需要执行的命令
- Host 主机(Docker 引擎):一个物理或者虚拟的机器用于运行 Docker 守护进程和容器,并且处理客户端请求
- image: Docker 把应用程序及其依赖,打包在 image 文件里面。类似一个二进制软件包
- container: image 文件生成的容器实例,本身也是一个文件,称为容器文件。就像安装好可以运行的软件,可以跑,可以停。
- Registry:Docker 用来存储已经制作好的镜像,方便随时取用和共享给他人使用。
- 镜像分层:Docker 支持通过扩展现有镜像,创建新的镜像。实际上,Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的。
- 可写的容器层:当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。容器层记录对镜像的修改,所有镜像层都是只读的,不会被容器修改,所以镜像可以被多个容器共享。
- Volume 数据卷:用来将数据持久化到我们宿主机上,与容器间实现数据共享,简单的说就是将宿主机的目录映射到容器中的目录,应用程序在容器中的目录读写数据会同步到宿主机上,这样容器产生的数据就可以持久化了,比如我们的数据库容器,就可以把数据存储到我们宿主机上的真实磁盘中。
参考链接:
- Docker 入门教程
- Docker 架构及工作原理



