什么是Dokcer

Docker 是一个开源的应用容器引擎,基于Go语言并遵循Apache2.0协议开源,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

  一个完整的Docker由如下部分组成:

    1. DockerClient客户端
    2. Docker Daemon守护进程
    3. Docker Image镜像
    4. DockerContainer容器

 

应用场景

  • Web 应用的自动化打包和发布。

  • 自动化测试和持续集成、发布。

  • 在服务型环境中部署和调整数据库或其他的后台应用。

  • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

 

优点

 Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

  且Docker开可以根据需要快速扩展应用程序和服务,只需要将制作的镜像运行即可;

 

为什么要使用Doker

 一个项目可能由多个模块构成,同时又有多个版本,并且数据库、中间件等需要维护,但是对于开发和运维人员来说,最希望的效果就是一次创建或者配置后,可以在任意地方、任意时间让应用正常运行,对于算法研究人员来说,可能不同的算法需要不同版本的软件,那么在同一个环境中就会存在冲突,docker 的环境隔离就可以很方便的用于不同环境的配置。

  Dokcer的出现解决了软件的更新发布部署效率低下、不同环境项目迁移高成本的问题,因为Docker可以快速快速构建镜像,运行、删除容器,从而实现应用程序和服务的快速迭代;Docker不需要额外的虚拟化程序支持,因为Docker是内核级的虚拟化,所以性能更高、同时对资源额外需求很低;Docker几乎可以在任意平台上运行,同时支持主流操作系统的发行版本,这使得Docker可以在不同平台间轻松的迁移应用;Docker使用Dockerfile构建镜像,使原来的繁琐的工作化繁为简,只需要修改参数即可代替以往的重复性操作,从而实现自动化容器操作管理

 

Docker概念

 Docker有三个基本概念,搞懂了概念才能事半功倍往下学习如何使用Docker,他们分别是镜像(Image),容器(Container),仓库(Respository)

  镜像:相当于一个系统文件,或者程序中的一个类,是一个未启动的程序;

  容器:镜像运行后就是一个容器,容器可以被创建、启动、停止、删除;容器承载着应用程序和服务,容器和镜像的关系就相当于类(镜像)和对象(容器),容器启动后服务就启动了;

  仓库:是一个镜像仓库,用来保存镜像;