docker&k8s介绍

524 阅读3分钟

docker介绍

docker是什么

Docker是一种工具,旨在通过使用容器更轻松地创建,部署和运行应用程序。

docker 和 虚拟机的区别

docker 解决的问题

  • 更少的资源
  • 环境配置难得问题(开发环境搭建)
  • 启动快
  • 体积小
  • 一次构建,处处运行 …

docker核心概念-镜像

docker的镜像就像上图这样,分了很多层,每一层都是在下一层的基础上添加内容,而且每层构建之后不在改变,每一层的处理都只对本层生效。

创建一个docker镜像

创建docker镜像,你需要先创建一个dockerfile文件,内容如下:

FROM nginx
RUN echo 'hello docker'

然后执行

docker build -t nginx:test .

命令,就可以构建你自己的镜像了

docker核心概念-容器

容器是镜像的实例,使用下面的命令运行一个容器:

docker run ...

比如运行docker官方提供的hello-word,可以看到输出的信息,docker具体做了哪些工作。

k8s介绍

k8s

k8s的概念,推荐看下这个视频,非常有意思。 www.youtube.com/watch?v=4ht… 当然,你需要正确的访问姿势才行。

k8s特性

  • 服务注册与负载均衡
  • 自动装箱(使得资源最大化利用)
  • 存储编排
  • 自愈(自动剔除,重启…)
  • 自动部署和回滚(逐步替换pod,有问题回滚)
  • 自动伸缩

k8s核心概念-Pod

容器的集合。

k8s最基本的概念应该是pod,一个pod中可以有多个容器,比如上图中的一个pod中,包括了一个nginx容器,以及一个DB容器,还有一个app容器。

k8s核心概念-Volume

Pod中被多个容器访问的共享目录。如果你需要在多个容器中访问一些通用的配置信息,可以将这些信息存储在Volume中。

k8s核心概念-Service

Pod的集合(虚拟概念)。在k8s中,我们可以将一个服务部署多个副本到多个pod中,这样就可以实现负载均衡和高可用,但是我们的多个pod怎么对外提供服务呢?就需要我们使用k8s的Service,一个Service可以映射到多个pod,同时也是因为pod的ip是会变的(也可以设置固定),不好控制,抽象一个Service的概念之后,Service来维护映射关系,这样外部只需要访问Service的地址就可以了。

k8s核心概念-Node

Pod集合。我们知道,pod是k8s里面的一个基本的单元,但是最终还是要部署到实际的虚拟机或者云服务器上去。

这里的Node就相当于是一个集群的一个节点。

k8s核心概念-Master

特殊的Node,集群控制节点。主要提供以下的服务。具体每一个服务是用来干什么的,可以直接看docker的官方文档介绍。

  • API Server
  • Controller Manager
  • Scheduler

k8s核心概念-Label

k8s中的label在很多地方都使用到了,比如我们上面说到的Service是多个pod的集合,那怎么知道一个Service所包括的pod有哪些呢?就是通过label来筛选的。看下图:

这里我们的一个Service有一个label为release:canary,通过这个label,就可以将所有这个label的pod给筛选出来,作为一个Service向外提供服务。

k8s核心概念-More

更多的k8s的概念,可以直接访问k8s的官网。这里大概例举一些上面没有讲到的:

  • Relocation Controller(RC)
  • Deployment(官方称为下一代的RC:Replica Set)
  • Namespace

小结

这篇文章由ppt整理而来,文字内容较少,如果由任何不明白或者错误的地方,欢迎随时联系我,谢谢!