Docker学习笔记——简介

Docker学习笔记——简介

什么是docker
Docker最初是由dotCloud公司创始人Solomon Hykes发起的一个公司内部项目,基于Go语言开发,目前主要的项目代码在GitHub上进行维护。web

Docker is an open platform for developers and sysadmins to build,ship,and run distributed appplications,whether on laptops, data center VMs, or the cloud. Docker是一个应用容器(Application container),基于Linux内核,对进程进行封装与隔离,是操做系统层面的虚拟化技术,它宗旨是:“Build once, run everywhere”。docker

docker和虚拟机的区别
docker相似于VM,可是在原理和应用上有很大差异。
VM架构

Docker

从上面两个图不难发现,虚拟机除了应用程序以外还须要携带操做系统,应用经过调用虚拟机的操做系统,而后虚拟机的操做系统调用Hypervisor调用宿主操做系统;而Docker中的应用经过Docker Engine调用宿主操做系统,显然更加高效、轻便。app

docker架构
docker采用C/S架构,客户端和服务端能够运行在一个机器上,也能够经过socket或者RESTful API 来进行通讯。socket

C/S架构

Docker daemon 通常运行与宿主后台,负责等待处理客户端发送的请求;
Docker client 为用户提供一套提供一套可执行的命令,用户使用这些命令与docker daemon进行交互。svg

docker组件
docker分为三个组件:学习

  1. 镜像:
    docker image 是一套特殊的文件系统,提供一套完整的操做系统运行环境和所需的应用程序。用户能够使用镜像建立容器,镜像不包含任何的动态数据,在构建以后不能改变。ui

  2. 容器:
    镜像和容器的关系相似于面向对象中类与实力的关系,镜像是静态的定义,容器是镜像运行时的实例。容器能够被建立、启动、中止、删除、暂停等操做操作系统

  3. Registry:
    Docker Registry提供集中存储、分发镜像的服务,一个docker registry中能够包含多个仓库,每一个仓库能够包含多个标签,每一个标签对应一个镜像。orm