菜鸟教程
官方文档
本文基本参考官方文档,有部分翻译直接用的原文php
Docker 是一个开源的应用容器引擎,基于 Go 语言 并听从Apache2.0协议开源。
Docker 可让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,而后发布到任何流行的 Linux 机器上,也能够实现虚拟化。
容器是彻底使用沙箱机制,相互之间不会有任何接口(相似 iPhone 的 app),更重要的是容器性能开销极低。
1.不一样的应用程序可能会有不一样的应用环境,好比.net开发的网站和php开发的网站依赖的软件就不同,若是把他们依赖的软件都安装在一个服务器上就要调试好久,并且很麻烦,还会形成一些冲突。好比IIS和Apache访问端口冲突。这个时候你就要隔离.net开发的网站和php开发的网站。常规来说,咱们能够在服务器上建立不一样的虚拟机在不一样的虚拟机上放置不一样的应用,可是虚拟机开销比较高。docker能够实现虚拟机隔离应用环境的功能,而且开销比虚拟机小,小就意味着省钱了。
2.你开发软件的时候用的是Ubuntu,可是运维管理的都是centos,运维在把你的软件从开发环境转移到生产环境的时候就会遇到一些Ubuntu转centos的问题,好比:有个特殊版本的数据库,只有Ubuntu支持,centos不支持,在转移的过程中运维就得想办法解决这样的问题。这时候要是有docker你就能够把开发环境直接封装转移给运维,运维直接部署你给他的docker就能够了。并且部署速度快。
3.在服务器负载方面,若是你单独开一个虚拟机,那么虚拟机会占用空闲内存的,docker部署的话,这些内存就会利用起来。总之docker就是集装箱原理。html
Web 应用的自动化打包和发布。
自动化测试和持续集成、发布。
在服务型环境中部署和调整数据库或其余的后台应用。
从头编译或者扩展示有的OpenShift或Cloud Foundry平台来搭建本身的PaaS环境。git
一、简化程序:
Docker 让开发者能够打包他们的应用以及依赖包到一个可移植的容器中,而后发布到任何流行的 Linux 机器上,即可以实现虚拟化。Docker改变了虚拟化的方式,使开发者能够直接将本身的成果放入Docker中进行管理。方便快捷已是 Docker的最大优点,过去须要用数天乃至数周的 任务,在Docker容器的处理下,只须要数秒就能完成。
二、避免选择恐惧症:
若是你有选择恐惧症,仍是资深患者。Docker 帮你 打包你的纠结!好比 Docker 镜像;Docker 镜像中包含了运行环境和配置,因此 Docker 能够简化部署多种应用实例工做。好比 Web 应用、后台应用、数据库应用、大数据应用好比 Hadoop 集群、消息队列等等均可以打包成一个镜像部署。
三、节省开支:
一方面,云计算时代到来,使开发者没必要为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思惟定势。Docker 与云的结合,让云空间获得更充分的利用。不只解决了硬件管理的问题,也改变了虚拟化的方式。docker
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和建立Docker容器。
Docker 容器经过 Docker 镜像来建立。
容器与镜像的关系相似于面向对象编程中的对象与类。数据库
Docker | 面向对象 |
---|---|
Container 容器 | 对象 |
Image 镜像 | 类 |
名称: | 说明 |
---|---|
Docker 镜像(Images) | Docker 镜像是用于建立 Docker 容器的模板。 |
Docker 容器(Container) | 容器是独立运行的一个或一组应用。 |
Docker 客户端(Client) | Docker 客户端经过命令行或者其余工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 与 Docker 的守护进程通讯。 |
Docker主机(Host) | 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。 |
Docker仓库(Registry) | Docker 仓库用来保存镜像,能够理解为代码控制中的代码仓库。Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。 |
Docker Machine | Docker Machine是一个简化Docker安装的命令行工具,经过一个简单的命令行便可在相应的平台上安装Docker,好比VirtualBox、 Digital Ocean、Microsoft Azure。 |