##docker基本使用

什么是 Docker
Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=16

Docker特点

  • Docker就是虚拟化的一种轻量级替代技术。
  • Docker的容器技术不依赖任何语言、框架或系统,
  • 可以将App变成一种标准化的、可移植的、脱离服务器硬件。
  • 在 Linux 系统上迅速创建一个容器(类似虚拟机)并在容器上部署和运行应用程序
  • 可以轻松实现应用程序的自动化安装、部署和升级,非常方便。

Docker 基本概念
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=49
docker文档资料
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=11
为什么要使用 Docker?
作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。
首先,Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多。 其次,Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。
容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。

具体说来,Docker 在如下几个方面具有较大的优势。

  • 更快速的交付和部署
  • 更高效的虚拟化
  • 更轻松的迁移和扩展
  • 更简单的管理

CentOS 如何安装 Docker
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=8
Ubuntu 如何安装 Docker
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=88

docker 基本命令简介
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=6
根据自己的理解,总的来说分为以下几种:

容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause]
容器操作运维 — docker [ps|inspect|top|attach|events|logs|wait|export|port]
容器rootfs命令 — docker [commit|cp|diff]
镜像仓库 — docker [login|pull|push|search]
本地镜像管理 — docker [images|rmi|tag|build|history|save|import]
其他命令 — docker [info|version]
看一个变迁图

docker使用相关经验
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=194
Dockerfile文件详解
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=9
用dockerfile配置生成docker image并实现容器部署
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=10
系统内核调优
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=155

我们对docker应用的希望(我们需要更好的容器编排系统)

  • 自动伸缩
  • 多租户
  • 监控
  • 报警

##Kubernetes 实践
Kubernetes介绍

Kubernetes 项目由 Google 公司在 2014 年启动。Kubernetes 建立在 Google 公司超过十余年的运维经验基础之上,Google 所有的应用都运行在容器上, 再与社区中最好的想法和实践相结合,也许它是最受欢迎的容器平台。
Kubernetes是一个以容器为中心的基础架构,可以实现在物理集群或虚拟机集群上调度和运行容器,提供容器自动部署、扩展和管理的开源平台。满足了应用程序在生产环境中的一些通用需求:应用实例副本、水平自动扩展、命名与发现、负载均衡、滚动升级、资源监控等。
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=116

使用Kubernetes可以实现:

自动化容器的部署和复制
随时扩展或收缩容器规模
将容器组织成组,并且提供容器间的负载均衡
很容易地升级应用程序容器的新版本
提供容器弹性,如果容器失效就替换它,等等

pod K8s的基本操作单元
Pod 是Kubernetes的基本操作单元,也是应用运行的载体。整个Kubernetes系统都是围绕着Pod展开的,比如如何部署运行Pod、如何保证Pod的数量、如何访问Pod等。另外,Pod是一个或多个相关容器的集合,这可以说是一大创新点,提供了一种容器的组合的模型。

Kubernete概念解析之Deployment
Deployment是Kubernetes中的一个非常重要的概念,Deployment为Pod和Replica Set(下一代Replication Controller)提供声明式更新。
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=160

docker里k8s自动扩缩容图解

Kubernetes发布历程回顾
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=198

Kubernetes 1.0 - 2015年7月发布
Kubernetes 1.1 - 2015年11月发布
Kubernetes 1.2 - 2016年3月发布
Kubernetes 1.3 - 2016年7月发布
Kubernetes 1.4 - 2016年9月发布
Kubernetes 1.5 - 2016年12月发布
Kubernetes 1.6 - 2017年4月发布
Kubernetes 1.7 - 2017年7月发布

kubernetes 创建高可用 etcd 集群
kuberntes 系统使用 etcd 存储所有数据,为了保证数据的可靠需要使用高可用 etcd 集群
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=34

阿里云快速部署Kubernetes 1.5
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=94
k8s 1.6 安装笔记
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=118

kubernetes网络组件
Kubernetes本身不提供网络模式,而是通过CNI网络插件实现
weaver网络、Flannel网络、Canal网络
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=36

Kubernetes资源管理
资源隔离和限制,这是PaaS的基础能力,Kubernetes对此也有初步的设计,有3 个层次的资源限制方式,分别在Container、Pod、Namespace 层次。Container层次主要利用容器本身的支持,比如Docker 对CPU、内存等的支持;Pod方面可以限制系统内创建Pod的资源范围,比如最大或者最小的CPU、memory需求;Namespace层次就是对用户级别的资源限额了,包括CPU、内存,还可以限定Pod、rc、service的数量。
k8s可以限制cpu和内存资源
Kubernetes技术分析之资源管理
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=87
官方namespace资源限制文档
https://kubernetes.io/docs/concepts/policy/resource-quotas/
github上资源限制的官方说明
https://github.com/kubernetes/community/blob/master/contributors/design-proposals/admission_control_resource_quota.md
kubetnetes运维经验列表
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=210
Kubernetes调度核心解密:从Google Borg说起
https://www.kubernetes.org.cn/1613.html

向Kubernetes集群添加/删除Node
https://blog.51cto.com/wutengfei/2113791
kubernetes jenkins发布流程


浏览原图(477KB)
https://github.com/rootsongjc/kubernetes-handbook/blob/master/practice/jenkins-ci-cd.md

Kubernetes技术分析之存储
用Kubernetes支持的几种Volume。
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=48

##kubernetes监控
基于Prometheus做多维度的容器监控
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=82

Grafana相关介绍
Grafana 是 Graphite 和 InfluxDB 仪表盘和图形编辑器。Grafana 是开源的,功能齐全的度量仪表盘和图形编辑器,支持 Graphite,InfluxDB 和 OpenTSDB。
Grafana 主要特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式;多个数据源;Graphite 和 InfluxDB 查询编辑器等等

Grafana截图
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=196

kubernetes ELK日志收集
ELK Stack 是 Elasticsearch、Logstash、Kibana 三个开源软件的组合。在实时数据检索和分析场合,三者通常是配合共用,而且又都先后归于 Elastic.co 公司名下,故有此简称ELK。

http://doc2.aiwaly.com/doc2/index.php?s=/7&page_id=197

Docker 镜像仓库
Docker私有仓库Registry的搭建
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=15
Harbor相关文档
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=51

kubernetes 与云主机混合架构
http://doc2.aiwaly.com/doc2/index.php?s=/2&page_id=169

文档更新时间: 2019-10-11 11:20   作者:月影鹏鹏