Docker教程

  Docker 是一种轻量的容器,可以作为PAAS的轻量化容器,也可以作为DevOps的工具,实现快速敏捷的持续交付,Docker与微服务的组合能够实现类似SOA服务 或EJB/Corba那样的分布式服务系统。Docker是一种新的分布式中间件技术。Docker微容器+微服务将颠覆传统的软件架构。本教程有多篇文章组成。

  Docker直接基于Linux内核,支持各种语言,它比VM虚拟机更加轻量,能够在Linux或云计算IaaS等平台上直接运行,带着你的应用无缝地移植到各种运行环境。

  有人无奈地说:Docker流行起来是因为我们的依赖设计做得不够到位,最后只能在运行阶段依靠Docker这样的微容器帮我们松耦合。

  使用docker的好处。

  • 隔离
  • 可移植性
  • 安全

  隔离

  如果你的应用需要在操作系统上安装某些二进制文件,使用Docker你就不需要这么做,取而代之是将这些文件安装到docker镜像上。这样,你的应用部署运行就不会影响到主机系统。

  可移植性

  你的应用及其依赖项都是以镜像形式存储。这个镜像可以在任何docker上发布、再分发和运行,基本无需采取任何额外操作(如再次安装依赖项)。

  安全

  随镜像一起提供的软件仅供当前这个容器使用。不会被操作系统或其他应用使用到。如果有任何不受信任的内容,它将仅在当前容器进程内运行。而容器是隔离的,因此这些可能不安全的内容不会与系统的其他部分交互,进而造成影响扩大。

  更详细的原理介绍: Docker:VM、代码迁移和SOA解决方案

  下面开始动手安装,首先,我们需要安装Docker:

  在VirtualBox和Vagrant中安装Docker

  如果将我们的应用交付到Docker 容器中,需要生成Docker部署文件,这篇教程以Java为例说明如何生成Docker Image:使用gradle生成Spring Boot应用的Docker Image

   如果你是Java开发者: 将Springboot应用程序封装在Docker容器中 使用Docker打包Java应用

  Docker的细粒度松耦合能够让我们用一个Docker容器装载一个场景功能,也就是按照功能角色分类,每个Docker里面装一个服务或应用,一个服务器上可以运行多个Docker,系统级别的服务比如Mysql数据库、Memcache缓存 和Nginx等。

  通过 使用Docker创建两个容器的应用 来了解应用程序组件的分离部署。

  将多个Docker分离部署就能形成分布式系统,见教程:使用Docker建立一个动态负载平衡的分布式Web系统 

  通过以上Docker安装 生成 运行和部署,你大概已经了解Docker是一个类似集装箱的容器,如果你的云计算支持Docker容器,那么你的应用系统就可以通过Docker享受强大的PaaS平台计算能力了,解决了应用程序的性能提升或扩展性Scalable问题。

  Docker两个开源PAAS项目flynn和deis的比较

  更多基于Docker的产品见:10个基于DOCKER的顶尖开发工具

  如果你还想深入了解Docker用途,可见:Docker的八种用途

参考

使用Salt管理和部署Docker

Docker容器化组件架构

使用Mesos和Marathon管理Docker集群

使用Apache Mesos和Consul实现服务的注册发现

Docker专题

什么是DevOps?

微服务架构

Docker专题