相关网站:

  1. Docker 官网
  2. Docker 官方文档
  3. Github Docker 源码

相关资料:

  1. RUNOOB docker教程

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 SDKDocker的守护进程 通信。
Docker主机(Host) 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
Docker Machine Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

HiDocker - 图1
u=2061515146,1437546780&fm=253&app=138&f=JPEG&fmt=auto&q=75.webp

Docker工作原理

Docker是一个CS系统,Docker的守护进程运行在主机上,通过Socket通讯

  1. 在客户端中输入命令,命令通过Socket,发送到Docker Server
  2. Docker Server运行在宿主机之上,它接收到Docker-Client的指令时,就会执行这个命令
    1. 比如docker run 镜像,那就会在内存中,根据镜像,创建一个容器实例