Docker

Catalogue
  1. 1. History
  2. 2. Why use Docker?
    1. 2.1. Docker vs VM
  3. 3. What is Docker?
    1. 3.1. Docker的三个概念
    2. 3.2. Union File System
    3. 3.3. Docker Components
    4. 3.4. 性质
  4. 4. Application
  5. 5. Docker on Mac
    1. 5.1. Install

参考资源:

History

  • Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动 开放容器联盟(OCI)。

  • Docker 自开源后受到广泛的关注和讨论,至今其 GitHub 项目已经超过 4 万 6 千个星标和一万多个 fork。甚至由于 Docker 项目的火爆,在 2013 年底,dotCloud 公司决定改名为 Docker。Docker 最初是在 Ubuntu 12.04 上开发实现的;Red Hat 则从 RHEL 6.5 开始对 Docker 进行支持;Google 也在其 PaaS 产品中广泛应用 Docker。

  • Docker 使用 Google 公司推出的 Go 语言 进行开发实现

  • Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。

Why use Docker?

  • Docker - Build, Ship, and Run Any App, Anywhere
  • 向服务器部署代码非常困难
  • 复杂的技术栈, 不同技术栈的版本依赖与冲突
  • How to solve it?

    Docker vs VM

What is Docker?

Docker的三个概念

  • 1 镜像(Image)
    • 类似于虚拟机中的镜像,是一个包含有文件系统的面向Docker引擎的只读模板。
    • 任何应用程序运行都需要环境,而镜像就是用来提供这种运行环境的。例如一个Ubuntu镜像就是一个包含Ubuntu操作系统环境的模板,同理在该镜像上装上Apache软件,就可以称为Apache镜像。
  • 2 容器(Container)
    • 类似于一个轻量级的沙盒,可以将其看作一个极简的Linux系统环境(包括root权限、进程空间、用户空间和网络空间等),以及运行在其中的应用程序。
    • Docker引擎利用容器来运行、隔离各个应用。容器是镜像创建的应用实例,可以创建、启动、停止、删除容器,各个容器之间是是相互隔离的,互不影响
    • 注意:镜像本身是只读的,容器从镜像启动时,Docker在镜像的上层创建一个可写层,镜像本身不变。
  • 3 仓库(Repository)
    • 类似于代码仓库,这里是镜像仓库,是Docker用来集中存放镜像文件的地方。
    • 注意与注册服务器(Registry)的区别:注册服务器是存放仓库的地方,一般会有多个仓库;而仓库是存放镜像的地方,一般每个仓库存放一类镜像,每个镜像利用tag进行区分,比如Ubuntu仓库存放有多个版本(12.04、14.04等)的Ubuntu镜像。

Union File System

Docker Components

  • Docker daemon
    • Runs on a host machine. It does the heavy lifting of building, running, and distributing Docker containers
  • Docker client
    • The primary user interface to Docker. It accepts commands from the user and communicates back and forth with a Docker daemon
  • Docker images
    • Docker image is a read-only template, which is used to create containers
  • Docker registries
    • Docker registries hold images, which are public or private stores from which you upload or download images.
  • Docker containers
    • Docker containers are similar to a directory.

性质

  • A Docker container holds everything that is needed for an application to run.
  • Each container is created from a Docker image.
  • Docker containers can be run, started, stopped, moved, and deleted.
  • Each container is an isolated and secure application platform.

Application

Docker 的主要用途,目前有三大类。

  • 1 提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。
  • 2 提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。
  • 3 组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。

Docker on Mac

Install

1
$ brew cask install docker
Share