Docker+K8s基础(重要知识点总结)
目录
- 一、Docker的核心
- 1,Docker引擎
- 2,Docker基础命令
- 3,单个容器运行多个服务进程
- 4,多个容器运行多个服务进程
- 5,备份在容器中运行的数据库
- 6,在宿主机和容器之间共享数据
- 7,在容器之间共享数据
- 8,对容器进行数据复制
- 二、Docker网络
- 1,查看容器的IP地址
- 2,将容器端口暴露到主机上
- 3, 单主机容器间通信
- 4,多主机容器间通信
- 5,选择容器网络模式
- 6,配置守护进程防火墙
- 7,IP转发设置
- 三、Kubernetes
- 1,简称k8s
- 2,三大核心对象
- 3,增强功能
- 4,全新的概念
- 5,Kubernetes 架构
- 6,创建一个多节点的Kubernetes集群
- 7,在Kubernetes集群上启动容器
- 8,通过标签查询和删除Kubernetes对象
- 9,管理pod的副本数
- 10,一个pod中运行多个容器
一、Docker的核心

1,Docker引擎
- 定义
基于单主机运行的守护进程
- 作用
创建和管理容器
2,Docker基础命令
docker ps
列出所有运行中的容器docker ps -a
列出所有容器docker run
前端启动运行容器docker run -d
后台启动运行容器docker stop
发送SIGTERM到容器,一定时间内没有停止,则会再送SIGKILL信号docker skill
发送SIGKILL信号到容器docker restart
重启容器docker rm
移除容器docker rm $(docker ps -a -q)
删除所有处于停止中的容器docker build
构建一个新镜像docker images
列出所有的镜像docker rmi
移除镜像
3,单个容器运行多个服务进程
使用Supervisor来监控并运行
Supervisor:用来控制多个进程的普通程序
4,多个容器运行多个服务进程
通过设置 --link 选项将容器连接在一起
5,备份在容器中运行的数据库
- 方式一 进入容器执行数据库备份命令
- 方式二 通过设置 -v 选项将宿主机和容器中的卷绑定
6,在宿主机和容器之间共享数据
通过设置 -v 选项将宿主机的卷挂载到容器中
7,在容器之间共享数据
通过设置 -v 选项创建一个称为数据容器的容器
8,对容器进行数据复制
使用 docker cp 命令将文件从正在运行的容器复制到 Docker 主机
二、Docker网络

1,查看容器的IP地址
- 方式一
docker inspect命令并指定一个Go模板格式
docker inspect --format '{{ .NetworkSettings.IPAddress }}' flask
- 方式二
docker exec 命令在容器内部执行命令
docker exec -ti flask ip add | grep global
- 方式三
查看容器内的 /etc/hosts 文件
docker exec -ti flask cat /etc/hosts | grep flask
- 方式四
进入容器中的 shell,输入标准的 Linux 命令
docker exec -ti flask bash || cat /etc/hosts
2,将容器端口暴露到主机上
- 方式一
docker run 命令的 -P 选项将容器内的端口动态绑定到宿主机上
docker run -d -p 5000 --name foobar flask
- 方式二
创建镜像时,在Dockerfile 中添加 EXPOSE 5000
docker run -d -P flask
3, 单主机容器间通信
- 单台 Docker 主机网络拓扑图

4,多主机容器间通信
多主机环构建一个通用路由封装(Generic Routing Encapsulation,GRE)来对 IPv4 通信进行封装,并为容器之间互连提供基于容器私有地址的路由
- 两台主机 GRE 隧道覆盖网络图

5,选择容器网络模式
docker run 命令的–net 选项
- 模式一
主机模式
实例
docker run -it --rm --net=host ubuntu:14.04 bash
- 模式二
无网络模式
实例
docker run -it --rm --net=none ubuntu:14.04 bash
- 模式三
与其他容器共享网络的模式
实例
docker run -ti --rm --net=container:cocky_galileo ubuntu:14.04 bash
6,配置守护进程防火墙
启动 Docker 守护进程时通过 --ip-forward=false 和 --iptables=false 参数对 Docker的网络进行定制
7,IP转发设置
- 启用
echo 1 > /proc/sys/net/ipv4/ip_forward
- 禁用
echo 0 > /proc/sys/net/ipv4/ip_forward
三、Kubernetes

1,简称k8s
- 定义 它是一个编排系统
- 编排系统 将一组主机(也称为节点)视为一个统一、可编程、可靠的集群
2,三大核心对象
1.pod
2.service
3.replication controller
3,增强功能
可靠的容器重启 Kubernetes 可以监视容器的运行状况,并在出现故障时重新启动容器
自愈 如果一个节点失效了,Kubernetes 会自动将失效节点上的任务重新调度到健康的节点上
动态服务归属机制可以确保这些新启动的容器能被发现并使用
高集群利用率 通过在一组通用的计算机上调度一组不同类型的工作负载,与静态的手动配置方式相比,用户可以大幅提高计算机的利用率
组织和分组 Kubernetes 提供了一个灵活的标签(label)系统,让用户和其他系统可以以一组容器为单位来进行处理
Kubernetes 支持命名空间功能,让不同的用户或团队在集群中看到相互隔离的不同视图
水平扩展和复制 扩展和负载平衡
微服务友好 应用程序可以被分解成更易于开发、扩展和推导的更小单位。
Kubernetes 提供了服务发现以及与其他服务进行通信的方式
- 简化运维 指定应用程序的运维团队(或者开发团队自己)可以专注于应用程序的运行,而不必去具体地管理各个节点
4,全新的概念
1.集群调度
选择一个节点来运行新容器,以优化集群的可靠性和利用率的过程
2.pod
必须将一组容器放置到同一个节点上,像一个团队一样工作
3.标签
添加到 pod 的元数据,用于对容器进行分组以进行监控和管理
4.replication controller
用于确保系统能进行水平扩展的代理(agent),也负责保证对 pod 进行可靠的管理
5.网络服务
一种用于在 pod 之间以及几组 pod 之间进行通信的方式,采用了动态配置的命名和网络代理
5,Kubernetes 架构

1.Kubernetes master 服务 提供了 API 来收集和展现群集的当前状态,并在节点之间分配 pod
2.主节点存储 所有的持久化状态都保存在 etcd 中
3.kubelet 这个代理(agent)运行在每个节点之上,负责控制 Docker,向 master
报告自己的状态,以及配置节点级别的资源(比如远程磁盘存储)
4. proxy 这个代理(proxy)运行于每个节点之上(也能在其他地方运行),为本地容器提供了一个单一的网络接口,以连接到一组 pod
5.Kubernetes service 用于集群内容器之间的通信
用于将外部流量转发到一组 pod
6,创建一个多节点的Kubernetes集群
1.安装 Vagrant和 VirtualBox
2.设置环境变量:KUBERNETES_PROVIDER (该变量表明你将要使用Vagrant)
3.设置环境变量:NUM_MINIONS [该变量用来设置集群中要启动的节点的数量(除master 节点之外的节点数量)]
4.使用由 Kubernetes 社区提供的安装脚本
5.vagrant status 命令可以列出运行中的虚拟机
6. Kubernetes 集群创建成功并可以正常使用
7,在Kubernetes集群上启动容器
1.下载Kubernetes 客户端 kubectl
2.设置集群正确的 API 地址以及相应的身份验证信息
3.创建一个Json/Yaml 格式的 pod 定义文件
4.通过 kubectl 客户端将这个文件提交到 Kubernetes API server
5.当镜像下载完成之后,容器就会开始运行
8,通过标签查询和删除Kubernetes对象
- 打标签
方式一 使用标签(label)给你的对象(比如 pod)打上标签
实例 修改 pod 的 yaml 元数据描述部分,增加一个 foo=bar 的标签
方式二 通过 kubectl label 命令在运行时进行打标签
实例 kubectl label pods 2048 env=production
- 通过标签查询Kubernetes对象
通过 kubectl 命令的 --selector 参数列出具有指定标签的所有 pod
实例 kubectl get pods --selector=“foo=bar”
- 通过标签删除Kubernetes对象
通过指定标签选择器来删除你的 pod
实例 kubectl delete pod --selector=“foo=bar”
9,管理pod的副本数
使用 replication controller为 pod 指定希望的副本数
- 增加副本数
使用 kubectl resize
实例
kubectl resize --replicas=4 rc rcgame
10,一个pod中运行多个容器
在安装时通过环境变量进行配置, 即修改Json/Yaml 格式的 pod 定义文件
相关文章:
Docker+K8s基础(重要知识点总结)
目录 一、Docker的核心1,Docker引擎2,Docker基础命令3,单个容器运行多个服务进程4,多个容器运行多个服务进程5,备份在容器中运行的数据库6,在宿主机和容器之间共享数据7,在容器之间共享数据8&am…...
IDEA 关闭SpringBoot启动Logo/图标
一、环境 1、SpringBoot 2.6.4 Maven POM格式 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.4</version><relativePath/></parent> 2、IDE…...
提供话费充值接口 话费快充慢充/API独立接口,商城/小程序/公众号合作
话费充值接口文档 接口版本:1.0 ―、引言 文档概述 本文档提供话费充值接口规范说明,提供一整套的完整的接入示例(http 接口)供商户参 考,可以帮助商户开发人员快速完成接口开发与联调,实现与话费充值系统的交易互联。 公司官网…...
[N-133]基于springboot,vue小说网站
开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 系统分前后台,项目采用前后端分离 前端技术:vueelementUI 服务端技术:springbootmybatis-plus 本项…...
计算机网络:概述
0 学时安排及讨论题目 0.1讨论题目: CSMA/CD协议交换机基本原理ARP协议及其安全子网划分IP分片路由选择算法网络地址转换NATTCP连接建立和释放再论网络体系结构 0.2 本节主要内容 计算机网络在信息时代中的作用 互联网概述 互联网的组成 计算机网络在我国的发展 …...
服务号怎么升级订阅号
服务号和订阅号有什么区别?服务号转为订阅号有哪些作用?首先我们要看一下服务号和订阅号的主要区别。1、服务号推送的消息没有折叠,消息出现在聊天列表中,会像收到消息一样有提醒。而订阅号推送的消息是折叠的,“订阅号…...
11.读取文件长度-fseek和ftell函数的使用
文章目录 简介1. 写入测试文件2. 读取文件长度 简介 主要讲使用fopen读取文件,配合使用fseek和ftell来读取文件长度。1. 写入测试文件 执行下方程序,使用fwrite函数写入40字节的数据,使其形成文件存入本地目录。#define _CRT_SECURE_NO_WARNI…...
视觉大模型DINOv2:自我监督学习的新领域
1 DINOv2 1.1 DINOv2特点 前段时间,Meta AI 高调发布了 Segment Anything(SAM),SAM 以交互式方式快速生成 Mask,并可以对从未训练过的图片进行精准分割,可以根据文字提示或使用者点击进而圈出图像中的特定…...
Java事务详解
一、事务的理解: 1、事务的特性: 1) 原子性(atomicity):事务是数据库的逻辑工作单位,而且是必须是原子工作单位,对于其数据修改,要么全部执行,要么全部不执行。 2) 一致性…...
el-table实现展开当前行时收起上一行的功能
<el-tableref"tableRef":data"tableData":expand-row-keys"expandRowKeys":row-key"handleRowKey" // 必须指定 row-keyexpand-change"handleExpandChange" // 当用户对某一行展开或者关闭的时候会触发该事件> <…...
Go的优雅退出
Go优雅退出/停机以前主要通过signal来实现,当然现在也是通过signal来实现,只是从go 1.16开始,新增了更加友好的API: func NotifyContext(parent context.Context, signals ...os.Signal) (ctx context.Context, stop context.CancelFunc) 该…...
【KVM-6】KVM/QEMU软件栈
前言 大家好,我是秋意零。 👿 简介 🏠 个人主页: 秋意零🔥 账号:全平台同名, 秋意零 账号创作者、 云社区 创建者🧑 个人介绍:在校期间参与众多云计算相关比赛&#x…...
硬件知识2
原理图的检查: 网络悬浮 单端网络 电源悬浮(电源和地) 重复的位号 网络短路(电源和地) AD里面双击messages里面的错误项会直接进入到原理图和PCB…...
【Java 进阶篇】JQuery DOM操作:通用属性操作的绝妙魔法
在前端的舞台上,JQuery犹如一位魔法师,为我们展现了操纵HTML元素的奇妙技巧。而在这个技巧的精妙组成中,通用属性操作是一门绝妙的魔法。在本篇博客中,我们将深入研究JQuery DOM操作中的通用属性操作,揭示这段魔法的神…...
在任何机器人上实施 ROS 导航堆栈的指南
文章目录 路径规划参考 路径规划 路径规划是导航的最终目标。这允许用户向机器人给出目标姿势,并让它在给定的环境中自主地从当前位置导航到目标位置。这是我们迄今为止所做的一切(地图绘制和本地化)的汇集点。ROS 导航堆栈已经为我们完成了…...
Android 中注解的使用
Android Support Library 从 19.1 版本开始引入了一个新的注解库,其中包含了很多的元注解,使用它们修饰我们的代码, 可以让我们提高程序的开发效率,让我们更早的发现问题。以及对代码施以规范,让代码更加有可读性。这篇…...
我国陆地遥感卫星发展现状与展望
一、引言 从20世纪90年代末至今,我国陆地遥感卫星事业历经二十多年,实现了从无到有、从小到大、从弱到强的跨越发展。随着高分辨率对地观测系统重大专项(高分专项)、《陆海观测卫星业务发展规划(2011—2020年ÿ…...
arcgis基础篇--实验
一、绘制带空洞的面要素 方法一:先绘制出一个面区域,然后在面上再绘制一个面区域代表面洞,两者位于同一个图层内,选中代表面洞的区域,选择【编辑器】-【裁剪】工具,将面裁剪出一个洞,随后删除代…...
【chatglm3】(3):在AutoDL上,使用4090显卡,部署ChatGLM3API服务,并微调AdvertiseGen数据集,完成微调并测试成功!附视频演示。
在AutoDL上,使用4090显卡,部署ChatGLM3API服务,并微调AdvertiseGen数据集,完成微调并测试成功! 其他chatgpt 和chatglm3 资料: https://blog.csdn.net/freewebsys/category_12270092.html 视频地址&#…...
python爬虫top250电影数据
之前看到的,我改了一下,多了很多东西 import requests from bs4 import BeautifulSoup from openpyxl import Workbook from openpyxl.styles import Font import redef extract_movie_info(info):# 使用正则表达式提取信息pattern re.compile(r导演:…...
嵌入式系统错误处理策略与实现技术
1. 嵌入式系统中的错误处理概述在嵌入式软件开发中,错误处理是确保系统稳定性和可靠性的关键环节。与通用计算机系统不同,嵌入式系统往往运行在资源受限的环境中,且需要长时间不间断工作,这使得错误处理策略的选择尤为重要。嵌入式…...
2025届必备的六大降重复率助手横评
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 纵然人工智能辅助毕业论文写作现如今已然成为一种学术方面的新常态,可是却需要去…...
嵌入式设备参数存储优化方案与实践
1. 嵌入式设备参数存储的痛点与常见方案在嵌入式系统开发中,参数存储是个看似简单却暗藏玄机的基础功能。我经历过多个量产项目,发现参数管理不当导致的现场问题占比高达30%。最常见的场景是:设备运行多年后需要功能升级,新增几个…...
第1节:如何统一多源文档格式?
RAG与Agent性能调优:1.如何统一多元文档格式? Gitee地址:https://gitee.com/agiforgagaplus/OptiRAGAgent 文章详情目录:RAG与Agent性能调优 下一节:待更新 导论 从路口着手解决问题 在RAG技术中,文档…...
别再死记硬背了!用这3个真实场景,彻底搞懂Koa中间件的洋葱模型
用三个实战案例拆解Koa中间件的洋葱模型 当你第一次听说Koa的"洋葱模型"时,是不是也和我一样,脑子里浮现出一个奇怪的画面:一个请求像剥洋葱一样,一层层往里钻,然后又一层层往外冒?但真正开始写代…...
【2026年最新600套毕设项目分享】springboot仁和机构的体检预约系统(14336)
有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运行一键启动项目&…...
基于VSC控制的400kW光伏并网发电厂模型
基于VSC控制的400kW光伏并网发电厂模型simulink模型各模块清晰明白,非常适用于新手入门学习大家好!今天我要和大家分享一个关于光伏并网发电厂模型的Simulink仿真项目。这个模型基于电压源式开关(VSC)控制,非常适合400…...
告别药物研发效率困境:用REINVENT4实现智能分子设计范式突破
告别药物研发效率困境:用REINVENT4实现智能分子设计范式突破 【免费下载链接】REINVENT4 AI molecular design tool for de novo design, scaffold hopping, R-group replacement, linker design and molecule optimization. 项目地址: https://gitcode.com/gh_mi…...
Python flask django框架的汽车零件运输管理信息系统设计及实现
目录同行可拿货,招校园代理 ,本人源头供货商功能模块设计技术实现要点高级功能扩展代码示例(Flask)部署与维护项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 ,本人源头供货商 功…...
国产化替代实战:在信创环境下用Docker-compose部署Nacos 2.2.0并连接达梦数据库
信创环境下Nacos与达梦数据库的无缝集成实战 在信息技术应用创新的大背景下,国产化替代已成为企业数字化转型的关键路径。作为微服务架构的核心组件,Nacos的国产化适配能力直接关系到整个系统的稳定性和可持续性。本文将深入探讨如何在信创环境中&#x…...
