一、Docker 简介
- Docker是2013年docker公司基于go语言编写的开源的应用容器引擎,并且是一个开源的pass服务(Platform as a Service,平台即服务的缩写)。
- docker公司最早叫dotCloud后由于Docker开源后大受欢迎就将公司改名为 Docker Inc,总部位于美国加州的旧金山。
- Docker 运行在Linux系统之上,基于C/S架构,使用远程API来管理和创建Docker容器,其可以轻松的创建一个轻量级的、可移植的、自给自足的容器。
- Docker 可以让开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到运行Linux的机器上。
- Docker 容器技术是完全使用沙箱机制,相互之间不会有任何接口。
- Docker目前分为两个版本:
- 社区版本(Community Edition, CE)
- 企业版本(Enterprise Edition, EE)
二、特别之处
Docker在虚拟化的执行环境中增加了一个应用程序部署引擎。该引擎的目标就是提供一个轻量、快速的环境,能够运行开发者的程序,并方便高效地将程序从开发者的笔记本部署到测试环境,然后再部署到生产环境。Docker极其简洁,它所需的全部环境只是一台安装了Linux的宿主机器。
三、Docker与LXC的关系
- Docker是基于linux 内核功能实现。
- LXC(LinuX Container的简写)是Linux内核原生支持的容器技术,可以提供基于容器技术的虚拟化。
- Docker最早采用LXC技术,提供 LXC 的高级封装,发展标准的配置方法。
四、Docker容器主要依托于Linux内核的三种功能
- kernel namespaces 内核名称空间
- 主要的六个名称空间:
- Mount,PID,Network,IPC,UTS,User
- 六个名称空间可以实现内核输出给用户空间的基础特性的隔离,不能实现计算资源的配额。
- 主要的六个名称空间:
- CGoups 控制组
- CUP,Memroy(内存),BLKIO(块设备的IO),...
- 将有限的资源分配多个不同的用户空间(容器)。
- Kernel Capabilities 内核能力
- 实现容器安全的非常重要的属性。
五、Docker 三个核心组件
Docker 架构图:
3091267295.jpg
5.1 Docker Client(客户端)
- Docker client只需向服务器或守护进程发出请求,服务器或守护进程将完成所有工作并返回结果。
5.2 Docker daemon(Docker引擎)
Docker 引擎组件图:
2793287560.png
- Docker daemon(daemon直译为守护进程)也称作Docker引擎。
- Docker daemon与docker registry之间的通讯协议是:https协议
- docker daemon 只认https服务的registry(安全的registry)。
- docker client与docker daemon默认只能运行在同一台主机上。
- 可以通过配置,让daemon监听一个端口,而实现client运行在另一台主机上。
- Docker daemon侦听客户端的请求并管理Docker objects(Doceker对象)。
- Docker objects:images(镜像),containers(容器),networks(网络)和volumes(存储卷)、Plugin(插件)。
5.2.1 images(镜像)
- 镜像是创建docker容器的基础,用户基于镜像来构建自己的容器。
- 镜像也是Docker生命周期中的“构建”部分。
- 镜像是基于联合文件系统的一种层式结构,由一系列指令一步步构建出来。
- 镜像自身是只读文件,Docker基于镜像启动容器的时候,会在镜像的最上层创建一个可写层,以后所有的操作都是在镜像的上一层(可写成)进行。
- 所以镜像的存储必须要求本地使用特定的文件系统,才能基于镜像启动容器:
- 高级联合文件挂载系统:aufs
- 叠加文件系统:overlayfs、overlayfs2
- 基于一个镜像可以同时启动多个容器。
5.2.2 containers(容器)
- 容器类似于一个轻量级的沙箱,docker利用容器来运行和隔离应用。
- 用户构建和部署容器,只需要把自己的应用程序或服务打包放进容器即可。
- 容器是基于镜像启动起来的,容器中可以运行一个或多个进程。
- 容器是从镜像创建的应用运行实例,他可以启动、开始、停止、删除、而这些容器都是彼此相互隔离、互不可见的。
- 可以认为镜像是Docker生命周期中的构建和打包阶段,而容器则是启动或执行阶段。
5.3 Docker Registry(仓库)
- Registry可以看做是用来保存用户所构建镜像的仓库。
- Registry分为公共和私有两种。
- Docker公司运营的公共Registry叫做Docker Hub,官网:https://hub.docker.com
- 用户可以在 DockerHub上注册账号,分享并保存自己的镜像。
- 国内强烈推荐使用阿里云的Docker镜像Registry,可自行注册阿里云账号开通docker服务。
- 阿里云Registry网址:
- 如非要使用Docker官网的镜像仓库服务,可以使用Docker加速器。
六、Docker能做什么
- 加速本地开发和构建流程,使其更加高效、更加轻量化。本地开发人员可以构建、运行并分享Docker容器。容器可以在开发环境中构建,然后轻松地提交到测试环境中,并最终进入生产环境。
- 能够让独立服务或应用程序在不同的环境中,得到相同的运行结果。这一点在面向服务的架构和重度依赖微服务的部署中尤其适用。
- 用Docker创建隔离的环境来进行测试,例如,用Jenkins这样的持续集成工具启动一个用于测试的容器。
- Docker可以让开发者先在本机上构建一个复杂的程序或架构来进行测试,而不是开始就在生产环境部署、测试。
- 构建一个多用户的平台即服务(PASS)基础设施。
- 为开发和测试提供一个轻量级的独立沙箱环境。
- 提供软件即服务(SAAS)应用程序,这里指的是将软件及运行环境整体打包方便交付和实施。
- 高性能、超大规模的宿主机部署。
尊重原创,允许参考修改,转载请注明原文地址。
第一章 初识Docker | 点击此处
第二章 安装Docker以及简单配置 | 点击此处
第三章 Docker容器的生命周期 | 点击此处
第四章 Docker命令汇总 | 点击此处
第五章 Docker基础命令详解 | 点击此处
第六章 Docker---镜像的命令详解 | 点击此处
第七章 Docker---容器的命令详解 | 点击此处
第八章 Docker与Alpine不解之缘 | 点击此处
未完待续
网友评论