相关网站:
相关资料:
Docker
开发、测试、生产环境的不同,为我们增加了很多麻烦。
我们是否可以在开发阶段中,将项目与环境打包,一起发布,从而达到环境的统一?这就是Docker做的事情。
Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
应用场景
- Web 应用的自动化打包和发布
- 自动化测试和持续集成、发布
- 在服务型环境中部署和调整数据库或其他的后台应用
- 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境
基本概念
| 概念 | 说明 |
|---|---|
| Docker镜像(Images) | Docker镜像是用于创建 Docker容器的模板 相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统 |
| Docker容器(Container) | 容器是独立运行的一个或一组应用,是镜像运行时的实体。 - 镜像可类比为“类”;容器可类比为“对象” |
| Docker仓库(Registry) | Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。 - Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。 - 一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。 - 通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以latest作为默认标签。 |
| Docker客户端(Client) | Docker客户端通过命令行或者其他工具使用Docker SDK与 Docker的守护进程 通信。 |
| Docker主机(Host) | 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。 |
| Docker Machine | Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。 |


Docker工作原理
Docker是一个CS系统,Docker的守护进程运行在主机上,通过Socket通讯
- 在客户端中输入命令,命令通过Socket,发送到Docker Server
- Docker Server运行在宿主机之上,它接收到Docker-Client的指令时,就会执行这个命令
- 比如docker run 镜像,那就会在内存中,根据镜像,创建一个容器实例
