容器化核心快速入门

概述

  • 物理机:好比是独立的大船,独立发动机,独立船舱。所有资源共用。运水果的同时就不能运鱼( 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几个重点的功能特性:

容器化优势

相关推荐
张晋涛1 小时前
KCD 北京站丨云原生与AI的双向奔赴,超强Speakers阵容公开
云原生·aigc·线下活动
Hellc0072 小时前
使用 Docker 部署 RabbitMQ 并实现数据持久化
docker·rabbitmq·ruby
梦游钓鱼2 小时前
在window终端创建docker容器的问题
运维·docker·容器
钢板兽3 小时前
Java后端高频面经——JVM、Linux、Git、Docker
java·linux·jvm·git·后端·docker·面试
StableAndCalm3 小时前
什么是zookeeper
分布式·zookeeper·云原生
SelectDB技术团队4 小时前
云原生时代的架构革新,Apache Doris 存算分离如何实现弹性与性能双重提升
大数据·数据库·云原生·doris·存算分离
海鸥816 小时前
在 k8s中查看最大 CPU 和内存的极限
linux·容器·kubernetes
梵法利亚6 小时前
Ubuntu-docker安装mysql
mysql·ubuntu·docker
rocksun7 小时前
使用GITOPS简化KUBERNETES实施:最佳实践
kubernetes