一、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