第一章 初识Docker
1.1 什么是Docker
Docker开源项目
Docker 是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotCloud公司(后改名为Docker Inc)。
Docker项目已加入了Linux基金会,遵循Apache 2.0协议,全部开源代码均在https://github.com/docker/docker上进行维护。
Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,即通过对组件的封装(packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)等生命周期的管理,达到应用组件级别的“一次封装,到处运行”。这里的应用组件,既可以是一个Web应用,也可以是一套数据库服务,甚至是一个操作系统或编译器。
Linux容器技术
Docker引擎的基础是Linux容器(Linux Containers,LXC)技术。
IBM DeveloperWorks上给出了关于容器技术的准确描述:
容器有效地将由单个操作系统管理的资源划分到孤立的组中,以便更好地在孤立的组间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制。此外也避免了准虚拟化(paravirtualization)和系统调用替换中的复杂性。
1.2 为什么使用Docker
Docker容器虚拟化的好处
与传统方法相比,Docker通过容器打包应用意味着迁移只需要在新的服务器上启动需要的容器即可。节约了大量的时间,降低部署过程出现问题的风险。
Docker在开发和运维中的优势
- 更快速的交付和部署
- 更高效的资源利用。 Docker容器的运行无需额外的虚拟化管理程序支持,它是内核级的虚拟化,可以实现刚搞性能,同时对资源的额外需求很低。
- 更轻松的迁移和扩展。Docker容器几乎可以在任意的平台上运行,包括物理机、公有云、私有云、个人电脑,服务器等。
- 更简单的更新管理。
Docker与虚拟机比较
- Docker容器很快,启动和停止可以在秒级实现。
- Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器
- Docker通过类似Git的操作来方便用户获取、分发和更新应用镜像,指令简明、学习成本低。
- Docker通过Dockerfile配置文件来支持灵活的自动化创建和部署机制,提高工作效率。