01-Docker架构及原理

一、Docker简介

1.1 什么是容器?

    容器是一个允许我们在资源隔离的过程中,运行应用程序和其依赖项、轻量的、操作系统级别的虚拟化技术,运行应用程序所需的所有必要组件都打包为单个镜像,这个镜像是可以重复使用的。当镜像运行时,它是运行在独立的环境中,并不会和其他的应用共享主机操作系统的内存,CPU或磁盘。这保证了容器内的进程不会影响到容器外的任何进程。

1.2 什么是Docker

    Docker是一个建立在Linux容器技术之上的应用容器引擎,可以创建、启动、停止、删除容器,管理容器配置和生命周期,达到应用组件级别的“一次封装,到处运行”的目的。可以将应用程序部署到容器,快速的启动一个应用服务,这里的应用既可以是一个普通应用程序,也可以是一套服务,甚至是一个完整的操作系统。Docker采用Go语言开发,基于Apache2.0开源授权协议发行。

二、Docker整体架构

2.1 Docker架构

    Docker采用的是Client/Server架构。客户端向服务器发送请求,服务器负责构建、运行和分发容器。客户端和服务器可以运行在同一个主机上,客户端也可以通过socket或REST API与远程的服务端通信。

    Images和Containers的区别是一个是静态一个是运行态,一个docker容器运行时会首先加载镜像放入containers中,然后运行。通常情况下,需要从docker registry中下载docker基础镜像到本地,通过这个镜像启动一个容器时,会在镜像上增加一层container layer层,用于读写操作。一个Images可以作为多个容器的基础镜像启动,因为是多层文件系统的组织形式,所以每基于基础镜像启动一个容器,就在上层增加一套可读写文件系统层container layer。

2.2 Docker核心组件

    【Client】:Docker 客户端 - 以docker二进制的形式出现,是Docker最基本的用户接口。他接收来自用户的命令,然后和Docker守护进程进行沟通,可以方便地在服务器上构建和运行容器。

    【Docker daemon】:Docker 服务器 - 是服务器组件,以 Linux 后台服务的方式运行,运行在 Docker host 上,负责创建、运行、监控容器,构建、存储镜像。

    【Image】:Docker 镜像 - 一个Docker镜像是一个只读的模板,通过它可以创建 Docker 容器。镜像有基础镜像和普通镜像之分,基础镜像指的是操作系统类如Ubuntu、CentOS等,作为其他镜像的构建基础。在基础镜像上可以添加自有应用构建成可用镜像。

    【Registry】:存放 Docker 镜像的仓库,Registry分私有和公有两种。Docker官方的仓库在国外可能访问比较慢,国内也有一些公司提供公有仓库。

    【Container】:Docker 容器 - Docker 镜像的运行实例,用户可以通过 CLI(docker)或是 API 启动、停止、移动或删除容器。可以这么认为,对于应用软件,镜像是软件生命周期的构建和打包阶段,而容器则是启动和运行阶段。

三、Docker特点

3.1 轻量

    Docker的轻量体现在内存占用小、高密度,Docker容不需要额外的虚拟化管理程序(Virtual Machine Manager,VMM,以及Hypervisor)支持,它是内核级的虚拟化,可以实现更高的性能,同时对资源的额外需求很低,一台主机上可以同时运行数千个Docker容器。

3.2 快速

    Docker容器很快,启动和停止可以在秒级实现,这相比传统的虚拟机方式要快得多。

3.3 隔离

    Docker的隔离沙盒技术更像虚拟机,通过namespace和cgroup进行资源隔离,有效的防止容器之间互相干扰。

3.4 Docker和传统虚拟机对比

    首先,Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多。其次,Docker对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。

    容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。

    传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。

四、Docker资源

4.1 QQ群

491533668-docker企业架构实践

437104773-Docker技术交流群

336533282-springcloud  docker kubernetes

397201742-Docker云

560648707-docker分享群3

325486037-Docker中文交流群2

530583087-Kubernetes交流群

181774264-Docker社区

145983035-docker-discuss X

491533668-docker企业架构实践

186293342-docker中国

4.2 网址资源

Docker主站点:https://www.docker.com/

Docker中文社区:http://www.docker.org.cn/index.html

Docker资源:http://www.docker.org.cn/page/resources.html

Docker官方文档:https://docs.docker.com/

DockerInfo中文文档:http://www.dockerinfo.net/document

Docker中文文档:https://docs.docker-cn.com/

docker问答录:https://blog.lab99.org/post/docker-2016-07-14-faq.html

制作PostgreSQL镜像教程:https://hub.docker.com/_/postgres/?spm=a2c4e.11153959.blogcont2307.6.91ee763e1e0Pq4

Docker中运行PostgreSQL:http://wiki.jikexueyuan.com/project/docker/examples/postgresql_service.html

docker部署PostgreSQL数据库:

    http://www.widuu.com/chinese_docker/examples/postgresql_service.html

    https://blog.csdn.net/liuyueyi1995/article/details/61204205

    https://segmentfault.com/a/1190000004518306

    https://www.cnblogs.com/cxy486/p/5164612.html

    http://dockone.io/article/118

    https://www.cnblogs.com/xuanmanstein/p/7742647.html

4.3监控资料

Docker监控实践:https://blog.csdn.net/wangpeng198688/article/details/50067485

Docker应用的可视化监控管理:https://blog.csdn.net/horsefoot/article/details/51749528

Docker监控工具比对:https://blog.csdn.net/zzh_gaoxingjiuhao/article/details/52754596

zabbix上监控docker:https://blog.csdn.net/yang00322/article/details/77895301

使用InfluxDB+cAdvisor+Grafana配置Docker监控:https://blog.csdn.net/qq_34605594/article/details/74522656

InfluxDb监控:https://blog.csdn.net/fengfengdiandia/article/details/77815017

你可能感兴趣的:(01-Docker架构及原理)