首页 > 其他分享 >K8S-学习笔记-001-容器Docker和K8S

K8S-学习笔记-001-容器Docker和K8S

时间:2023-05-23 23:06:05浏览次数:42  
标签:容器 K8s Kubernetes 可以 001 Linux Docker K8S

K8S-学习笔记-001-容器Docker和K8S


  1. 容器是什么?
    简单来说,它就是个小工具,可以把你想跑的程序,库文件,配置文件都一起“打包”。
    在任何一个计算机的节点上,都可以使用这个打好的包。

    有了容器,一个命令就能把你想跑的程序跑起来,做到了一次打包,就可以到处使用。

    比如:
    可以把整套Zabbix环境(httpd+php+mysql+zabbix-server)一起打包,然后给它搬到其它机器上直接运行。

    有人把Docker和容器划等号,其实不对。

    Docker只是一个容器工具,而真正的容器技术是LXC(Linux Container),Docker只是更加方便地将其展现出来。

容器就像上面图里的集装箱,每一个集装箱里面都是一个完整的应用,可以将其放到任意一台机器上运行起来。

Docker 是一个开源的应用容器引擎。

K8S-学习笔记-001-容器Docker和K8S_Docker


Docker Client:Docker 客户端

用于执行Docker的命令,比如:镜像下载 docker pull nginx 。

Docker Host:Docker 主机

Docker daemon: Docker 守护进程,运行在服务器或者其它工作站。

Docker Image: Docker 镜像,相当于一个模板,可以用来启动容器。

Docker Container:Docker 容器,由镜像启动,容器运行着相关的应用程序。

Docker Registry:Docker 仓库

用于存放Docker Image。

  1. 容器与虚拟化的差别?
  1. 物理机:直接安装操作系统,比如:Windows/Linux。在1台物理机上面安装1个系统1个或者多个应用。
  2. 虚拟化:直接安装服务器虚拟化软件,VMware ESXi/Microsoft Hyper,在1台物理机上面安装多个虚拟机,多个应用。
  3. 容器:直接在物理机上面安装CentOS,再安装容器Docker,安装容器管理平台K8S,在容器中直接运行应用,利用K8S管理整个容器平台。比如:Zabbix\MySQL\等。

K8S-学习笔记-001-容器Docker和K8S_Google_02


  1. 容器基本概念
    LXC:
    是Linux Contain的缩写,就是Linux容器,是一个基于Linux内核功能特性实现轻量级虚拟化的技术。

    注意:Docker/Podman等容器技术,都是在LXC基础之上开发的三方工具。

    LXC可以在操作系统层次上为进程提供虚拟的执行环境,一个虚拟的执行环境就是一个容器。

    可以为容器
    绑定特定的CPU和Memory节点,
    分配特定比例的CPU时间、IO时间,
    限制可以使用的内存大小(包括内存和是swap空间),
    提供device访问控制,提供独立的namespace(网络、pid、ipc、mnt、uts)。

容器的隔离:

容器有效地将操作系统管理的资源划分到独立的组中,并把各个独立的组进行隔离,可以让各自的组占用独立的资源,完成自己独立的任务。

  1. 容器核心技术
    chroot:
    创建一个虚拟的根目录文件系统,其实质还是调用底层的文件系统。
    不过是建立一个虚拟的、可以跟其它容器的虚拟文件系统相互隔离、但共享底层的文件系统。

    namespace:
    命名空间可以提供一个进程相互隔离的独立网络空间,不同的容器间进程pid可以相同,进程并不冲突影响,
    但可以共享底层的计算和存储资源。

    cgroups:
    实现了对容器的资源分配和限制,
    比如给容器A分配4颗CPU,8G 内存,那这个容器最多用这么多的资源。
    如果内存超过8G ,会启动swap,效率降低,也可能会被调度系统给kill掉。
  2. 企业为什么要使用容器技术?提升效率:
    容器可以快速移植,这就意味着企业在开发、部署阶段快速搭建开发、测试环境,并快速部署到生产环境里。

    节省资源:
    一台物理机上可以运行几百个甚至上千个容器,这如果换成传统的虚拟化技术,是根本做不到的。

    节省运维成本:
    使用主流的容器编排和管理工具(如,K8s),可以大大降低企业的运维成本,因为K8s本身集成了高可用、负载均衡、监控、自动修复等诸多功能,一旦上线,几乎不用花额外的运维成本。
  3. 跟容器相关的工具


1)Docker

Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。

Docker诞生于2013年,它的出现推动了容器技术发展的步伐,使其突飞猛进、日新月异。可以说,没有Docker,就没有后续的K8s、云原生。

学K8s之前,需要先学Docker,学会其镜像、容器、卷等概念。


2)Kubernetes(K8s)


简单来说,

Kubernetes 就是一个生产级别的容器编排平台和集群管理系统,

不仅能够创建、调度容器,还能够监控、管理服务器。


它凝聚了体智慧,从而让中小型公司也可以具备轻松运维海量计算节点——也就是“云计算”的能力。


作为世界上最大的搜索引擎,Google 拥有数量庞大的服务器集群,为了提高资源利用率和部署运维效率,它专门开发了一个集群应用管理系统,代号 Borg,在底层支持整个公司的运转。


2014 年,Google 内部系统要“升级换代”,从原来的 Borg切换到Omega,于是按照惯例,Google 会发表公开论文。在发论文的同时,把 C++ 开发的 Borg 系统用 Go 语言重写并开源,于是


由于 Kubernetes 背后有 Borg 系统十多年生产环境经验的支持,技术底蕴深厚,理论水平也非常高,一经推出就引起了轰动。


2015 年,Google 又联合 Linux 基金会成立了 CNCF(Cloud Native Computing Foundation,云原生基金会),并把 Kubernetes 捐献出来作为种子项目。


有了 Google 和 Linux 这两大家族的保驾护航,再加上宽容开放的社区,作为 CNCF 的“头把交椅”,Kubernetes 旗下很快就汇集了众多行业精英,仅用了两年的时间就打败了同期的竞争对手 Apache Mesos 和 Docker Swarm,成为了这个领域的唯一霸主。



标签:容器,K8s,Kubernetes,可以,001,Linux,Docker,K8S
From: https://blog.51cto.com/dynamic/6334753

相关文章

  • Kubernetes(k8s)最大启动时长研究
    一、前言应用部署在Kubernetes(k8s)上,有些应用启动慢一些,没启动好就又被k8s重启了二、处理过程1.看日志[2023-05-2314:38:52.249]|-INFO|-[background-preinit]|-o.h.v.i.u.Version[0]|-[TID:N/A]|-HV000001:HibernateValidator6.1.7.Final[2023-05-2314:40:11.817]|-......
  • 阿里云vpc下面部署自建k8s一些注意事项
    简介这几天接手了一个政府单位项目,所有的资源均为云资源,而且是阿里云vpc机器。在部署k8s的过程中发现我部署的k8s跨主机网段不通。折腾了我好几天最后发现问题是我在vpc里面是用的不是规定的cidr,我是用的是172.235.0.0修改到规定的cidr清空etcd删除网络重装k8s即可。解决阿......
  • docker安装redis
    docker安装mysql1、下载镜像文件dockerpullmysql:5.72、创建实例并启动dockerrun-p3306:3306--namemysql\-v/mydata/mysql/log:/var/log/mysql\-v/mydata/mysql/data:/var/lib/mysql\-v/mydata/mysql/conf:/etc/mysql\-eMYSQL_ROOT_PASSWORD=root\-dmy......
  • mysql、redis、mongo本地docker部署命令备忘
    1mysqldocker环境部署####获取镜像dockerpullredis####启动mysqldockerrun--name=mysql-it-p3306:3306-eMYSQL_ROOT_PASSWORD=123456-dmysql####登录mysql-h127.0.0.1-P3306-uroot-p1234562redisdocker环境部署####官⽅方指引https://hub.docker.c......
  • mac docker compose简单使用说明
    1dockercompose简介Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用Compose通过一个配置文件来管理多个-Docker容器,非常适合组合使用多个容器进行开发的场景。docker-compose是编排容器的。例如,你有一个php镜像,一个mysql镜像,一个nginx镜像。如果没......
  • docker学习笔记:harbor私有仓库的搭建以及简单应用
    harbor私有仓库简介Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的DockerRegistry管理项目,它包括权限管理(RBAC)、LDAP、日志审......
  • docker学习笔记:Prometheus+cAdvisor搭建容器监控
    Prometheus+cAdvisor容器监控简介Prometheus官网Prometheus-Monitoringsystem&timeseriesdatabaseCNCF云原生基金会的第二个项目cAdvisorcAdvisor(ContainerAdvisor)是Google开源的一个容器监控工具,可用于对容器资源的使用情况和性能进行监控。它以守护进程方式......
  • docker 安装 nginx
    从https://blog.csdn.net/u010148813/article/details/126172372摘要的内容1.下载镜像dockerpullnginx:1.22.02.创建挂载目录mkdir/root/apply/docker/apply/nginx3.从容器中复制要挂载的文件dockerrun--namenginx1.22-p10080:80-dnginx:1.22.0dockercpngi......
  • 动力节点Docker深入浅出(一)Docker概述
    分享一下最近正在b站上看动力节点的docker课程,整理了相关学习笔记,会按照学习进度慢慢更新的,加油本套课程适合零基础、技术提升乃至所有编程语言开发者;课程对应包含含基础篇、提升篇与高级篇,共计十二大章节。本课程主要学习知识点:“7个深度/3个全面”;针对Docker的知识体系,无......
  • https部署与docker下nginx的转发+文件获取
    进入nginx容器查看是否有etc/nginx/cert目录将https的域名证书放到cert目录下配置80和443server{#listen80;#侦听80端口listen80;#侦听443端口,用于SSLserver_name127.zyfdtsite.com;client_max_body_size1024m;#charsetkoi8-r;#acc......