介绍

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker在部署软件方面解决了最困难的问题,将应用程序代码开发和部署环境。在不同平台之间移植代码变得很简单,因为我们的应用程序代码是被包装在Docker环境中。

Docker和虚拟机VM的区别

虚拟机(vm)是一个了不起的工具,它有助于进一步抽象运行时环境的物理硬件。 但不幸的是在启动和执行,有一个非常陡峭的性能损失。vm的大部分问题的原因是因为重复,想想Linux操作系统的结构,有一个清晰的分离, Linux内核负责管理深层网络和线程等任务和内核之外的一切的用户空间。


virtualbox 和 VMware 等传统虚拟机运行在用户空间, 传统的VM启动一个实例时,它携带了一个Linux内核和在现有的用户空间内的一个用户空间。


这就是重复发生的地方,为什么要在用户空间再启动一个Linux内核呢?而不是使用已经有的内核?下面是Docker的示意图:


Docker启动一个实例时,它会将用户空间和所在主机的Linux内核连接,因此启动只需要毫秒,性能是97%。具体了解Docker推荐一篇文章《Docker:VM、代码迁移和SOA解决方案》,可在我资源里下载。

Docker关键词

  • 镜像是 Docker 应用的静态表示,是应用的交付件,镜像中包含了应用运行所需的所有依赖:包括应用代码、应用依赖库、应用运行时和操作系统。
  • Dockerfile 是一个描述文件,描述了产生 Docker 镜像的过程。
  • 容器是镜像运行时的动态表示,如果把镜像想象为一个 Class 那么容器就是这个 Class 的 instance 实例。

一个应用 Docker 化的第一步就是通过 Dockerfile 产生应用镜像。

安装

我电脑是Mac,使用官网推荐Docker Toolbox自动安装Docker所需要的周边软件,包括:

  • VirtualBox
  • Docker客户端
  • Docker Compose通过DockerFil文件一键部署
  • Kitematic 一个Docker和Docker Hub的GUI客户端
  • Docker Machine 用于帮助用户创建的Docker主机,默认是default

考虑官网下载太慢了,建议去DaoCloud上下载并按照教程安装(http://docs.daocloud.io/faq/install-docker-daocloud),同时,操作上有时可能是网速问题,得不到及时响应,所以可以多试几次。

MacX应用Docker扩展

MacX通过docker-machine在一个Linux虚拟机中运行Docker Daemon。docker-machine是用来创建和管理Linux虚拟机(Docker Daemon运行的基础)的工具,MacX使用Oracle VM VirtualBox来虚拟Linux,这里需要注意Oracle VM VirtualBox的版本最好为4.3版本,我在部署过程中使用最新的Oracle VM VirtualBox5.0,发现跟着官方文档往下无法启动default虚拟机,具体原因Google一堆,目前没有查清楚。(引自作者zhoujingk_49)


总结

Docker非常适合SOA的微服务架构,每一个单独的Dockerfile代表一个微服务,这些微服务是不同与在SOA范围内的传统服务。 传统的服务通常是整体性的,很难被分割和碎片化, Micro-services专注于非常小的、可重用的组件,尽可能少知道他们所处的环境。 Docker提供工作的隔离,可以部署在任何地方执行小micro-services。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐