容器化核心快速入门

概述

  • 物理机:好比是独立的大船,独立发动机,独立船舱。所有资源共用。运水果的同时就不能运鱼( 1964年)
  • 虚拟机:相当于把大船进行改造,把大船的资源进行独立的拆分,独立的部分都有单独的发动机、船舱资源,互不影响。可以同时运水果、蔬菜、鱼。但是独立分隔的资源,会有资源损耗和浪费。(2006年)
  • 容器:相当于船上的集装箱。集装箱之间相互隔离,不用关心集装箱里装的什么。对大船的资源实现更高程度的使用。( 2013 年)

容器

随着信息爆炸时代来临,服务数量也随之激增。零散的几个服务可能不需要费劲就能管理好,但是要做大做强,我们就需要组建集群(船队)。这时候,如何管理船队就变成了一个难题:

Docker

什么是Docker

Docker是基于容器技术开发的一个应用, 提供了一个开放的、标准化的打包、部署容器的方法。使得容器实现轻巧、秒级启动、版本管理、可移植性等特性。

Docker底层实现

  • VM虚拟机 在物理机上虚拟一个独立的Guest OS,并利用Hypervisor虚拟化CPU、内存、IO设备等实现资源隔离。
  • Docker 利用Linux内核特性实现的隔离,运行容器的速度几乎等同于直接启动进程。 每个容器一个单独的命名空间,容器内的应用都像是运行在独立的OS中一样,彼此之间互不影响。

容器镜像

  • 镜像是一个特殊文件系统,提供容器运行所需的程序、库、资源、配置等。
  • 镜像不包含任何动态数据,其内容在构建之后也不会被改变。
  • 镜像相当于一个只读的模板,可以用来创建容器。

Dockerfile

  • Dockerfile是用来构建镜像过程的描述文本文件,包含自定义的指令和格式。
  • 可以通过docker build命令根据Dockerfile构建镜像。

容器

  • 从镜像创建的运行实例。可以被启动、开始、停止、删除。
  • 镜像好比光碟,容器好比用光碟播放出来的电影。
  • 容器本质上是运行在宿主机上的进程。
  • 容器通过linux的namespace实现资源隔离,通过cgroups实现资源限制,通过Capabilities实现了操作权限控制。
Go 复制代码
Docker ps

Dockerfile编写实践:基本语法

Docker常用命令

  • docker build,构建镜像;
  • docker push,推送镜像;
  • docker run,新建并启动容器;
  • docker stop,停止容器;
  • docker rm,移除容器;
  • docker ps,查看容器;
  • docker logs, 查看容器中的日志;
  • docker exec,进入容器并执行命令;

Kubernetes (k8s)

什么是K8S

Kubernetes (k8s)是2014年谷歌开源的一个能满足自动化部署、弹性伸缩和调度管理的开源容器化平台。使用 Kubernetes,你可以快速、高效地满足docker集群管理需求。

k8s整体架构图

Kubernetes常用资源

  • Pod,可被k8s管理的最小部署单元,包含一个或多个容器。
  • ReplicaSet & Deployment,无状态服务,Pod管理控制器,管理副本数量、升级策略等。 StatefullSet,有状态服务,稳定标识,有序部署,扩展。
  • DaemonSet, Pod 运行在集群中的全部或者部分节点上。
  • Job,Cronjob ,任务管理
  • Service,为一组pod提供一种可以访问它们的策略 ,并提供负载均衡的能力
  • Ingress,用于将不同URL的访问请求转发到后端不同的Service,以实现HTTP层的业务路由机制。
  • Volume,持久存储卷。
  • ConfigMap,Secret,配置管理,秘钥管理。
  • HPA,水平自动扩缩容,基于服务负载实现实例自动增减。

Kubernetes几个重点的功能特性:

容器化优势

相关推荐
梅见十柒2 小时前
wsl2中kali linux下的docker使用教程(教程总结)
linux·经验分享·docker·云原生
Python私教2 小时前
ubuntu搭建k8s环境详细教程
linux·ubuntu·kubernetes
运维&陈同学3 小时前
【zookeeper01】消息队列与微服务之zookeeper工作原理
运维·分布式·微服务·zookeeper·云原生·架构·消息队列
O&REO4 小时前
单机部署kubernetes环境下Overleaf-基于MicroK8s的Overleaf应用部署指南
云原生·容器·kubernetes
politeboy4 小时前
k8s启动springboot容器的时候,显示找不到application.yml文件
java·spring boot·kubernetes
运维小文5 小时前
K8S资源限制之LimitRange
云原生·容器·kubernetes·k8s资源限制
登云时刻5 小时前
Kubernetes集群外连接redis集群和使用redis-shake工具迁移数据(二)
redis·容器·kubernetes
wuxingge13 小时前
k8s1.30.0高可用集群部署
云原生·容器·kubernetes
志凌海纳SmartX14 小时前
趋势洞察|AI 能否带动裸金属 K8s 强势崛起?
云原生·容器·kubernetes
锅总14 小时前
nacos与k8s service健康检查详解
云原生·容器·kubernetes