docker笔记

容器技术

应用程序仅由较少数量的大组件构成时,可以给每个组件分配专用的虚拟机来隔离他们的环境。但是,组件更小,数量更多时,继续使用虚拟机来隔离得话,会浪费硬件资源,增加人力资源。

Linux容器技术隔离组件

虚拟机和容器
虚拟机
  • 管理程序将物理资源分成较小部分的虚拟硬件资源,从而被虚拟机中的操作系统使用。
  • 系统调用:运行在虚拟机中的应用程序,会执行虚拟机操作系统的系统调用。虚拟机操作系统通过管理程序在宿主机上的物理CPU执行x86指令。
虚拟机和容器对比
  • 容器比虚拟机更加轻量级,虚拟机需要运行自己的一组系统进程,容器不需要。使用容器时,能够也应该让每个应用有一个容器
  • 多个容器会完全执行运行在宿主机上的同一个内核的系统调用。而虚拟机提供完全隔离的环境,每个虚拟机运行在自己的Linux内核。(虚拟机的优点)
  • 运行容器不需要像运行虚拟机一样开机,容器进程可以很快被启动。

容器实现隔离原理

Linux命名空间
  • 使每个进程只看到自己的系统视图(文件、进程、网络接口、主机名等)
Linux控制组cgroups

限制进程能够使用的资源量

docker

什么是docker? docker是一个快速交付,运行应用的容器化技术
docker解决了项目部署过程中的一些问题

  • 大型项目组件多,依赖关系复杂,容易出现兼容性问题. docker将Libs(函数库)、Deps(依赖)、配置与应用一起打包,放到隔离的容器中
  • 开发、测试、生产环境有差异 docker将用户程序与所需要调用的系统库函数一起打包,基于打包的系统库函数,调用内核指令

基本概念

  • 镜像 Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像
  • 容器 镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见
  • 仓库 eg.:DockerHub是一个Docker镜像的托管平台

C/S架构模式

  • Docker客户端 发送命令或者请求到Docker服务端

  • Docker主机 一个物理或者虚拟的机器用于执行 Docker 守护进程。

docker镜像是如何构建的?

1.Docker的客户端和守护进程不要求在同一台机器上
2.Docker客户端将 整个目录的文件上传到Docker守护进程
3.由Docker守护进程构建新的镜像

tips: 不要在构建目录中包含任何不需要的文件,尤其当Docker守护进程运行在一个远端机器的时候。

docker容器的镜像层

docker镜像由多层构成 docker镜像和虚拟机镜像的一个很大的不同就在于:容器镜像是由多层构成。docker镜像能够在多个镜像之间共享和征用。共享:基于相同基础层的镜像被创建成两个容器时,他们能够读相同的文件。但,容器镜像是只读的,其中一个容器写入某些文件对另外的容器是不可见的。层不仅使得镜像在网络上的分发效率提高,还有助于减少镜像的存储空间。

  • Dockerfile中每一条单独的指令都会创建一个新层。
docker 命令
docker 网络

docker如何处理容器网络访问?
docker0
ip addr Linux命令,查看本机地址

l0 本机回环地址
eth0 阿里云内网地址
docker0 docker0地址

在容器中查看地址:

docker容器间ping
tomcat01 ping tomcat02

容器启动的时候会得到eth@if262 ip地址(docker分配的)

  • 每启动一个docker容器,docker就会给容器分配一个ip
  • 安装了docker,就会有一个docker0网卡(桥接模式,使用evth-pair技术)
  • evth-pair 一对虚拟设备接口,成对出现,充当桥梁,连接各种虚拟网络设备
  • 容器删除,对应的网桥也删除了
–link

不好用

自定义网络

网络模式:

  • bridge
  • none
  • host

自定义网络,不需要使用 --link 就能够使用名字ping

docker run时,默认有 --net bridg

dockerCompose
  • DockerCompose可用基于Compose文件帮我们快速部署分布式应用
  • Compose文本文件通过指令定义集群中容器如何运行

Kubernetes

Kubernets集群架构

一个Kubernets集群由很多节点组成。

  • 主节点:承载Kubernetes控制和管理整个集群系统的控制面板
  • 工作节点:运行用户实际部署的应用
控制面板
  • Kubernetes API服务器
  • Scheculer:调度应用,为应用的每个可部署组件分配一个工作节点
  • Controller Manager: 执行集群级别的功能,复制组件、持续跟踪工作节点、处理节点失败
  • etcd: 一个可靠的分布式数据存储,能持久化存储集群配置。
工作节点
  • Docker rtk 或其他的容器类型
  • Kubelet: 与API服务器通信,并管理它所在节点的容器
  • kube-proxy: 负责组件间的负载均衡网络流量

式数据存储,能持久化存储集群配置。

工作节点
  • Docker rtk 或其他的容器类型
  • Kubelet: 与API服务器通信,并管理它所在节点的容器
  • kube-proxy: 负责组件间的负载均衡网络流量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/653368.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在WebSocket中使用Redis出现空指针异常解决方案

文章目录 在WebSocket中使用Redis1.问题描述2.原因3.解决步骤1.新建一个SpringUtil.java类,通过getBean的方法主动获取实例2.在WebSocketSingleServer.java中导入 在WebSocket中使用Redis 1.问题描述 在controller 和 service中都可以正常使用Redis,在…

xcode安装visionOS Simulator模拟器报错解决方法手动安装方法

手动安装方法: 手动下载visionOS Simulator模拟器地址: https://developer.apple.com/download/all/ 选择 Xcode 版本 sudo xcode-select -s /Applications/Xcode.app # 用 Xcode-beta 的话是: # xcode-select -s /Applications/Xcode-beta…

openssl3.2 - 测试程序的学习

文章目录 openssl3.2 - 测试程序的学习概述笔记openssl3.2 - 测试程序的学习 - 准备openssl测试专用工程的模板openssl3.2 - 测试程序的学习 - test\aborttest.copenssl3.2 - 测试程序的学习 - test\sanitytest.copenssl3.2 - 测试程序的学习 - test\acvp_test.copenssl3.2 - 测…

Python 编程技巧

在开发解决方案时,我们倾向于将复杂的实际问题提炼为更小、更易于管理的子问题,然后使用函数来解决这些问题。函数是冗余代码的克星,也是我们抵御代码复杂性的最强防线。 大多数函数在编写过程中,关键是其返回值。函数产生结果的…

邻接矩阵、关联矩阵

邻接矩阵: 邻接矩阵是一种用来表示图中顶点间相互连接关系的矩阵。在邻接矩阵中,矩阵的行和列都代表图中的顶点。 对于无权图,如果顶点 i 和顶点 j 之间有一条边,则矩阵中的元素 Aij​(位于第 i 行和第 j 列&#xff…

编译Opencv3.3 版本遇到的Cuda版本变更导致:CUDA_nppicom_LIBRARY (ADVANCED)链接找不到的问题根本解法:

前言: Opencv 开源库的使用是必须的,但是,开源项目的特性,造成,版本的依赖性比较复杂, 尤其是针对某一款老硬件的SDK,往往随着某个开源库的使用,导致,无法编译的问题&am…

有一段时间没更新了

OK呀兄弟们,也是好久没更新了,这不是二级学完了,准备搞二级了吗,所以这两天我在做二级的往期考题,没发博客,请见谅,如果你们也在为等级考试做准备,那不妨去看看吧,往期考…

(bean的创建图)学习Spring的第十天(很重要)

大致框架按如下 第一次细分 bean对象还未创建 操作第一个map 引入BeanFactoryPostProcessor , 即Bean工厂后处理器 , 为Spring很重要的扩展点 BeanFactoryPostProcessor内部的方法 可以对BeaDefinition进行修改 , 也可进行BeanDefinition的注册 ( 原有在xml文件配置的bean…

AI之DL:人工智能领域—深度学习的发展历程之深度学习爆发的三大因素、探究DL为什么耗算力

AI之DL:人工智能领域—深度学习的发展历程之深度学习爆发的三大因素、探究DL为什么耗算力 目录 深度学习的发展历程之深度学习爆发的三大因素

从零学习Linux操作系统 第二十部分 mariadb数据库的管理

一、对于数据库的基本介绍 1.什么是数据库 数据库就是个高级的表格软件 2.常见数据库 Mysql Oracle mongodb db2 sqlite sqlserver … 3.Mysql (SUN -----> Oracle) 4.mariadb (Mysql的一种) 数据库中的常用名词 1.字段 :表格中的表头 2.表 &…

Day01_变量和数据类型(注释,关键字,标识符,数据类型,字面量,变量,常量,进制,计算机存储单位,Java的基本数据类型的存储范围,计算机如何表示数据)

文章目录 JavaSE_Day01 变量和数据类型学习目标1.1 注释(*comment*)(掌握)1.2 关键字(*keyword*)(掌握)1.3 标识符( identifier)(掌握)1.3.1 标识符的命名规则…

构造器模式

构造器模式 意图 将一个复杂对象的构建和表示分离,使得相同的构建能创建不同的表示。 解释 案例:想象一个角色扮演游戏的特征生成器。最简单的选择是让计算机为你创建角色。如果你想手动选择特征的细节像职业、性别、头发的颜色等。特征的产生是一个循…

js实现动漫拼图1.0版

文章目录 1 实现效果视频2 功能实现思路3代码实现 1 实现效果视频 拼图1.0 2 功能实现思路 布局忽略(小白学前端,不献丑了) 左侧拼图格 左侧4*4的拼图小格子 利用表格实现,规划好td的大小,给每个格子加上背景图片&…

Flink问题解决及性能调优-【Flink不同并行度引起sink2es报错问题】

最近需求,仅想提高sink2es的qps,所以仅调节了sink2es的并行度,但在调节不同算子并行度时遇到一些问题,找出问题的根本原因解决问题,并分析整理。 实例代码 --SET table.exec.state.ttl86400s; --24 hour,默认: 0 ms …

MySQL查询—联合查询、子查询

关于表格的创建,请看上一篇文章——MySQL查询—连接查询 1、联合查询:把多次查询的结果合并,形成一共新的查询集。 UNION,UNION ALL 语法: SELECT 字段列表 FROM 表A..&#…

【MySQL】MySQL内置函数--日期函数/字符串函数/数学函数/其他相关函数

文章目录 1.日期函数2.字符串函数3.数学函数4.其它函数 1.日期函数 MySQL中内置了一下函数: 函数名称描述current_date()当前日期current_time()当前时间current_timestamp()当前时间戳date(datetime)返回datetime参数的日期部分date_add(date,interval d_value_t…

qt-C++笔记之使用信号和槽实现跨类成员变量同步响应

qt-C笔记之使用信号和槽实现跨类成员变量同步响应 —— 杭州 2024-01-24 code review! 文章目录 qt-C笔记之使用信号和槽实现跨类成员变量同步响应1.运行2.main.cpp3.test.pro4.编译 1.运行 2.main.cpp 代码 #include <QCoreApplication> #include <QObject> #…

Linux下Docker搭建部署Typecho博客【详细版】

Linux下Docker搭建部署Typecho博客【详细版】 一、环境准备1.1.准备阿里云服务器【新用户免费使用三个月】1.2.准备远程工具【FinalShell】1.3.系统信息1.4.安装所需软件包1.5.设置docker镜像源1.6.更新yum软件包索引1.7.确认停用selinux 二、安装Docker2.1.安装Docker-Ce2.2.查…

【RTP】webrtc 学习3: webrtc对h264的rtp解包

rtp_rtcp\source\video_rtp_depacketizer_h264.cc【RTP】webrtc 学习2: webrtc对h264的rtp打包 中分析了打包过程的代码,这样再来看解析过程的源码就容易多了:本代码主要基于m79,m98类似。这里注明了jitterbuffer 会再次 做 解析stap-a 变为NAL units解析ParseFuaNalu 第一…

ACL、VLAN、NAT笔记

一、ACL ---访问控制列表 1.ACL的作用 1&#xff0c;访问控制&#xff1a;在路由器流量流入或流出的接口上&#xff0c;匹配流量&#xff0c;然后 执行设定好的动作。 ---- permit 允许 , deny 拒绝 2&#xff0c;抓取感兴趣流&#xff1a;ACL可以和其他服务结合使用。ACL只…