Docker(四)

文章目录

    • 1. docker其他命令补充
    • 2. docker-registry使用
    • 3. docker-hub的使用
    • 4. 企业级私有仓库harbor
      • 4.1 harbor安装
      • 4.2 harbor配置https
      • 4.3 harbor常见使用
        • 4.3.1 harbor新建项目仓库
        • 4.3.2 harbor创建用户
        • 4.3.3 harbor仓库管理
        • 4.3.4 harbor复制管理
        • 4.3.5 harbor删除镜像
    • 5. docker基础网络
      • 5.1 四种基础网络类型
      • 5.2 创建自定义网络
    • 6. 跨宿主机容器网络类型
      • 6.1 跨宿主机容器网络macvlan类型
      • 6.2 跨宿主机容器网络overlay类型

1. docker其他命令补充

# 镜像的构建历史
docker history 镜像id   # 一个镜像可以起多个标签,多个标签类似于硬链接,必须把所有相同镜像的标签删除,
# 这个镜像才算完全删除,只删除其中一个,相当于只删了标记,因为镜像层是共用的。
docker tag alpine:3.9 alpine:latest# docker container diff容器相对于镜像发生变化的文件
docker run -d -it centos:7
docker cp 1.txt  容器id:/root
docker container diff  容器id# export和import是一对导出镜像/导入镜像,他们和save和load的区别是(一般不使用)
# export导出的镜像只有一层,import导入的镜像是无名镜像
docker run -d kod:v2
docker export  容器id >docker_test.tar.gz
docker import  docker_test.tar.gz# 查看镜像和容器的id
docker image inspect  镜像id
docker container inspect  容器id# 将容器进行挂起
docker container  pause  容器id
# 将容器取消挂起
docker container  unpause  容器id# 单纯看一下容器的端口映射,比较鸡肋,直接用docker ps查看即可(一般不用)
docker container port 容器id# 清理停止状态的容器
docker container prune
# 清理没有标签的镜像
docker image prune# 容器的监控,监控每个容器占用了多少资源
docker container stats  # 实时动态展示
docker container stats --no-stream  # 只显示一次# 可以修改容器的属性,资源的限制
docker container update --help
##  只要docker已启动,这个容器就会启动
docker container update --restart always 容器id
## 更新资源的限制
[root@docker01 ~]# docker container update --memory 50MiB  --memory-swap  50MiB zabbix_zabbix-server_1
zabbix_zabbix-server_1
## 内存限制成功
[root@docker01 ~]# docker container stats --no-stream | grep zabbix_zabbix-server_1
f52e728c1856   zabbix_zabbix-server_1            0.25%     21.93MiB / 50MiB      43.87%    38MB / 19.5MB   0B / 0B          30## 也可以启动容器的时候指定容器的资源
docker run -d --memory 10M kod:v3
docker container stats --no-stream# 查看容器内的进程信息
docker container top 7ea8724b7da6 # 容器停止后,返回容器内初始命令停止的$?的值
docker  container  wait 容器id# 网络有关
docker network# 数据卷有关
docker volume ls
docker volume prune # 清理卷,删除操作要谨慎docker system df  # 查看镜像和容器和卷和构建缓存的信息
docker system prune  # 清理停止的容器、没有使用网络的容器、没有名字的镜像、没有使用的缓存
docker system info  # 查看docker的信息
Runtimes: runc # 如果容器的运行环境都是runc,容器镜像就可以通用
docker system event  # 查看事件,启动容器的会产生事件

2. docker-registry使用

实验环境:

10.0.0.11 docker01 安装私有仓库,充当服务端
10.0.0.12 docker02 充当客户端,上传下载镜像

# 1. 上传下载后的镜像,如果没有就会从官网仓库下载,启动私有仓库
[root@docker01 ~]# docker load -i registry.tar.gz
[root@docker01 ~]# docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry registry# 2. 在客户端进行配置镜像加速和添加信任私有仓库,并重启docker生效
[root@docker02 ~]# vim /etc/docker/daemon.json
{"registry-mirrors": ["https://registry.docker-cn.com"],"insecure-registries": ["10.0.0.11:5000"]
}
[root@docker01 ~]# systemctl restart docker# 3. 镜像地址
## 镜像的名字决定了是官方镜像还是第三方仓库的镜像
nginx:1.15 官方仓库的官方镜像
nginx/nginx:1.15 官方仓库的用户镜像
daocloud.io/nginx/nginx:1.15 私有仓库的镜像# 4. 上传镜像的步骤
(1) docker tag 打标签
(2) docker push 推镜像# 5. 实战演练: 上传镜像和下载镜像
## 上传镜像,私有仓库也是分层存储的,如果上传的镜像在仓库中已经有镜像层了,那么只上传了标签
[root@docker02 ~]# docker tag alpine:3.9  10.0.0.11:5000/alpine:3.9
[root@docker02 ~]# docker image push 10.0.0.11:5000/alpine:3.9
## 下载镜像,下载镜像也是有分层
[root@docker02 ~]# docker image pull 10.0.0.11:5000/alpine:3.9

在这里插入图片描述

docker-registry仓库管理操作

# 1. 查看仓库里有哪些镜像
http://10.0.0.11:5000/v2/_catalog# 2. 查看某个镜像有哪些版本
http://10.0.0.11:5000/v2/alpine/tags/list# 3. 在仓库中删除镜像
## (1) 进入docker registry的容器中
[root@docker01 ~]# docker exec -it registry /bin/sh
ls /var/lib/registry/docker/registry/v2/
blobs  # 镜像的层信息         
repositories # 仓库的信息,存的各种镜像的名字
## (2) 删除repo
rm -fr /var/lib/registry/docker/registry/v2/repositories/alpine
## (3) 清楚掉blob
registry garbage-collect /etc/docker/registry/config.yml# 4. 带认证的registry
yum install httpd-tools -y
mkdir /opt/registry-var/auth/ -p
htpasswd -Bbn admin 123456 >> /opt/registry-var/auth/htpasswd
docker run -d -p 5000:5000 -v /opt/registry-var/auth/:/auth/ -v /opt/myregistry:/var/lib/registry -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry# 提示: 上传下载镜像都需要登陆
docker login 10.0.0.11:5000
admin/123456
# 登出私有仓库
docker logout 10.0.0.11:5000

小提示:
docker-registry优点:功能简单,占用资源比较少,推荐个人使用
docker-registry缺点:功能比较少,web界面操作不方便,不像docker hub一样在页面可以直接进行镜像的管理,所以生产一般用企业级的仓库harbor

3. docker-hub的使用

# (1) 登录docker hub,输入账号和密码
[root@docker01 ~]# docker login# (2) 在alpine镜像打tag,然后push镜像到docker hub中个人的仓库
[root@docker01 ~]# docker tag  alpine:v1  d15926990/alpine:v1
[root@docker01 ~]# docker push d15926990/alpine:3.9

小提示: docker pull的时候默认是拉取的是最新的镜像latest,所以上传镜像的时候打一个v1版,在打一个latest版本,方便别人下载

4. 企业级私有仓库harbor

实验环境:

10.0.0.12 docker01 安装harbor,充当harbor服务端
10.0.0.11 docker02 充当客户端,上传下载镜像

harbor是在docker-registry的基础上进行的二次开发

4.1 harbor安装

# (1) 配置yum源
[root@docker02 ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@docker02 ~]# curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo# (2) 配置信任的仓库,并重启docker
[root@docker01 ~]# cat /etc/docker/daemon.json
{"registry-mirrors": ["https://registry.docker-cn.com"],"insecure-registries": ["10.0.0.12"]
}
[root@docker01 ~]# systemctl restart docker# (3) 安装docker-compose,安装harbor依赖docker-compose,可以在gitlhub上看相应的版本的安装步骤
[root@docker02 ~]# yum  install docker-compose -y 
[root@docker02 ~]# docker-compose -v小提示: (了解即可,这样安装会有报错)
# epel源里面的docker-compose不是最新的,如果像安装最新的docker-compose,用pip去安装
yum install python-pip -y
# pip默认使用的是国外的源
pip install docker-compose
# 使用国内的源https://mirrors.tuna.tsinghua.edu.cn/help/pypi/
pip install docker-compose -i https://pypi.tuna.tsinghua.edu.cn/simple# (4) 上传下载的harbor,并且进行解压,下载地址: https://github.com/goharbor/harbor/releases/download/v1.10.0/harbor-offline-installer-v1.10.0.tgz
[root@docker02 ~] mkdir harbor
[root@docker02 ~] cd harbor
[root@docker02 harbor]# tar xf harbor-offline-installer-v2.1.0.tgz
[root@docker02 harbor]# cd harbor
[root@docker02 harbor]# cp harbor.yml.tmpl harbor.yml# (5) 修改配置文件
[root@docker02 harbor]# vim harbor.yml
hostname: 10.0.0.12
## 取消https的配置
harbor_admin_password: 123456# (6) 执行安装脚本, 注意: 每次改完harbor.yml后,都要执行以下install.sh
[root@docker02 harbor]# ./install.sh
[root@docker02 harbor]# docker ps
CONTAINER ID   IMAGE                                COMMAND                  CREATED          STATUS                    PORTS                                   NAMES
e391d207c6c8   goharbor/harbor-jobservice:v2.1.0    "/harbor/entrypoint.…"   37 seconds ago   Up 34 seconds (healthy)                                           harbor-jobservice
c6c75effa454   goharbor/nginx-photon:v2.1.0         "nginx -g 'daemon of…"   37 seconds ago   Up 34 seconds (healthy)   0.0.0.0:80->8080/tcp, :::80->8080/tcp   nginx
7f92a6011fe1   goharbor/harbor-core:v2.1.0          "/harbor/entrypoint.…"   37 seconds ago   Up 36 seconds (healthy)                                           harbor-core
2c002af31254   goharbor/harbor-registryctl:v2.1.0   "/home/harbor/start.…"   40 seconds ago   Up 37 seconds (healthy)                                           registryctl
aa586c1e5eeb   goharbor/registry-photon:v2.1.0      "/home/harbor/entryp…"   40 seconds ago   Up 36 seconds (healthy)                                           registry
a91f8df80b77   goharbor/redis-photon:v2.1.0         "redis-server /etc/r…"   40 seconds ago   Up 37 seconds (healthy)                                           redis
3a8ae1794ca2   goharbor/harbor-portal:v2.1.0        "nginx -g 'daemon of…"   40 seconds ago   Up 36 seconds (healthy)                                           harbor-portal
2dc692066706   goharbor/harbor-db:v2.1.0            "/docker-entrypoint.…"   40 seconds ago   Up 38 seconds (healthy)                                           harbor-db
929feea38c1f   goharbor/harbor-log:v2.1.0           "/bin/sh -c /usr/loc…"   42 seconds ago   Up 39 seconds (healthy)   127.0.0.1:1514->10514/tcp               harbor-log# (7) 访问harbor,并且push镜像到harbor仓库中
## 浏览器访问harbor
http://10.0.0.12## docker登录到harbor服务器,注意:docker login 默认登录的是docker hub仓库
## 登录10.0.0.12的harbor服务,如果有服务器是域名docker login dk.harbor.com,需要重新进行密码认证
[root@docker01 ~]# docker login 10.0.0.12
[root@docker01 ~]# docker tag alpine:3.9 10.0.0.12/library/alpine:3.9
[root@docker01 ~]# docker push 10.0.0.12/library/alpine:3.9

在这里插入图片描述
在这里插入图片描述

4.2 harbor配置https

# (1) 修改harbor.yml,在阿里云或者腾讯云申请下来的证书配置到对应的路径中
[root@docker02 harbor]# vim harbor.yml
## 配置域名
hostname: dk.harbor.com
## 配置证书
https:port: 443certificate: /opt/certs/nginx/xxx.crtprivate_key: /opt/certs/nginx/xxx.key# (2) 重新执行安装脚本
## 因为harbor已经安装完成,没必要重新导入镜像,所以可以注释导入镜像,加快脚本执行
[root@docker02 harbor]# vim install.sh
## docker load -i ./harbor*.tar.gz
[root@docker02 harbor]# ./install.sh# (3) liunx和windows都要配置host劫持
## linux配置host劫持,用于docker pull镜像,域名解析
[root@docker01 ~]# vim /etc/hosts
10.0.0.12   dk.harbor.com## windows的hosts劫持,用于域名访问harbor网站
C:\Windows\System32\drivers\etc/hosts
10.0.0.12   dk.harbor.com

4.3 harbor常见使用

4.3.1 harbor新建项目仓库

把一个项目的所有镜像都归类为一组,比如创建zabbix项目仓库

在这里插入图片描述
在这里插入图片描述

# (1) 查找相关zabbix的项目
[root@docker01 ~]# docker images | grep zabbix
zabbix/zabbix-server-mysql      latest    e36e7fa7e11a   6 years ago     106MB
zabbix/zabbix-web-nginx-mysql   latest    386dc9afc1c4   6 years ago     174MB
zabbix/zabbix-java-gateway      latest    4257519fd740   6 years ago     148MB# (2) 将zabbix的项目打tag,上传到zabbix项目仓库
[root@docker01 ~]# docker tag zabbix/zabbix-server-mysql:latest 10.0.0.12/zabbix/zabbix-server-mysql:latest
[root@docker01 ~]# docker push 10.0.0.12/zabbix/zabbix-server-mysql:latest

在这里插入图片描述

4.3.2 harbor创建用户

在这里插入图片描述
在这里插入图片描述

linux后台操作

# harbor上用户创建好了之后,在linux后台要把之前docker login 10.0.0.12的账号密码删掉,重新认证
# cat /root/.docker/config.json, auth:"xxx" 这个密码是base64加密的
[root@docker01 ~]# rm -f  /root/.docker/config.json# 使用zabbix用户进行登录,在进行docker pull,docker push
[root@docker01 ~]# docker login 10.0.0.12

4.3.3 harbor仓库管理

仓库管理:可以做主从同步,可以把别的仓库上的镜像,都拉取过来

在这里插入图片描述
在这里插入图片描述

4.3.4 harbor复制管理

复制管理: 同步的一个策略
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3.5 harbor删除镜像

删除镜像后,还需要垃圾清理

在这里插入图片描述

在这里插入图片描述

5. docker基础网络

5.1 四种基础网络类型

(1) brige  默认类型,NAT模式(172.17网段)
[root@docker01 ~]# docker run -d  alpine:3.9
[root@docker01 ~]# docker run -d --network brige alpine:3.9(2) host   host类型,使用宿主机网络,网络性能最高
[root@docker01 ~]# docker run -d --network host alpine:3.9(3) container 容器类型。使用其他容器共用网络,k8s中使用(跟其他容器共用网络,不属于一个单独的类型)
# 新启动的容器使用的网络要跟容器088f18113eeb一样,报错hosts解析,主机名,ip地址等都相同,但是一个容器占用3000端口,另一个就不能使用3000端口了
[root@docker01 ~]# docker run -d --network container:088f18113eeb alpine:3.9
# 启动一个监听端口为 3000 的服务器,用来测试端口占用问题
nc -l -p 3000(4) none  没有网络,上不了外网
[root@docker01 ~]# docker run -d --network none alpine:3.9

5.2 创建自定义网络

brige网络默认使用的是172.17网段,如果想要使用其他网段,可以自定义一个网络

# (1) 创建自定义网络,-d就是DRIVER
[root@docker01 ~]# docker network create -d bridge --subnet 172.19.0.0/16 --gateway 172.19.0.1  dk_network# (2) 查看所有的网络,dk_network网络的详细信息
## 查看所有的网络
[root@docker01 ~]# docker network ls
NETWORK ID     NAME             DRIVER    SCOPE
88e9df90483a   bridge           bridge    local
d9a0dfe597ea   dk_network       bridge    local
89ca93183afb   host             host      local
ff7f6a319b68   none             null      local
## 查看dk_network网络的详细信息
[root@docker01 ~]# docker network inspect dk_network# (3) 启动一个容器,使用刚创建的网络dk_network
[root@docker01 ~]# docker run -it --network dk_network alpine:3.9# (4) 启动容器,使用刚创建的网络dk_network,自定义网络可以指定ip地址
[root@docker01 ~]# docker run -it --network dk_network --ip 172.19.0.100 alpine:3.9

6. 跨宿主机容器网络类型

6.1 跨宿主机容器网络macvlan类型

macvlan类似与虚拟机的桥接网络

# (1) 在两台虚拟机上创建网络
[root@docker01 ~]# docker network create -d macvlan --subnet 10.0.0.0/24 --gateway 10.0.0.254 -o parent=eth0 macvlan_dk
[root@docker02 ~]# docker network create -d macvlan --subnet 10.0.0.0/24 --gateway 10.0.0.254 -o parent=eth0 macvlan_dk# (2) 启动容器,使用macvlan_dk网络,并进行测试
## macvlan要手动管理ip地址,手动指定ip地址,否则容易ip地址冲突,虚拟机有检测ip地址冲突的机制,容器是没有的
[root@docker01 ~]# docker run -it --network macvlan_dk --ip 10.0.0.105 alpine:3.9
[root@docker02 ~]# docker run -it --network macvlan_dk --ip 10.0.0.106 alpine:3.9
/ # ping 10.0.0.105
PING 10.0.0.105 (10.0.0.105): 56 data bytes
64 bytes from 10.0.0.105: seq=0 ttl=64 time=1.414 ms
64 bytes from 10.0.0.105: seq=1 ttl=64 time=1.009 ms

--gateway 10.0.0.254 这个网关的ip地址与下图保持一致

在这里插入图片描述

6.2 跨宿主机容器网络overlay类型

docker03上: consul存储ip地址的分配
docker run --restart=always -d -p 8500 :8500 -h consul --name consul progrium/consul -server -bootstrapdocker01、 02 上:
vim /etc/docker/daemon.json
{
"cluster-store": "consul://10.0.0.13:8500",
"cluster-advertise": "10.0.0.11:2376"
}vim /usr/lib/systemd/system/docker.service
systemctl daemon-reload
systemctl restart docker2)创建overlay网络
docker network create -d overlay --subnet 172 .20.2.0/24 --gateway 172.20.2.254 ol13)启动容器测试
docker run -it --network ol1 --name test01 alpine:3.9 /bin/sh
每个容器有两块网卡,eth0实现容器间的通讯,eth1实现容器访问外网

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

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

相关文章

K8S下如何搭建eureka集群

背景 传统应用上云,基于传统应用需要考虑上云的方案和改造成本,这也是传统应用上云过程中的难点,本篇介绍3台eureka搭建的方案。 方案一 此方案借助了K8S中Service的一些功能。 这种方案是传统方案的简单迁移版本,比较易于理解…

深度学习:tf.keras实现模型搭建、模型训练和预测

在sklearn中,模型都是现成的。tf.Keras是一个神经网络库,我们需要根据数据和标签值构建神经网络。神经网络可以发现特征与标签之间的复杂关系。神经网络是一个高度结构化的图,其中包含一个或多个隐藏层。每个隐藏层都包含一个或多个神经元。神经网络有多…

【微信小程序】使用iView组件库中的icons资源

要在微信小程序中使用iView组件库中的icons资源,需要先下载并引入iView组件库,并按照iView的文档进行配置和使用。 以下是一般的使用步骤: 下载iView组件库的源码或使用npm安装iView。 在小程序项目的app.json文件中添加iView组件库的引入配…

mac端好用的多功能音频软件 AVTouchBar for mac 3.0.7

AVTouchBar是来自触摸栏的视听播放器,将跳动笔记的内容带到触摸栏,触摸栏可显示有趣的音频内容,拥有更多乐趣,以一种有趣的方式播放音乐,该软件支持多种音频播放软件,可在Mac上自动更改音乐~ 音频选择-与内…

Flask Bootstrap 导航条

(43条消息) Flask 导航栏,模版渲染多页面_U盘失踪了的博客-CSDN博客 (43条消息) 学习记录:Bootstrap 导航条示例_bootstrap导航栏案例_U盘失踪了的博客-CSDN博客 1,引用Bootstrap css样式,导航栏页面跳转 2,页面两列…

实验五 分支限界法

实验五 分支限界法 01背包问题的分治限界法的实现 剪枝函数 限界函数 1.实验目的 1、理解分支限界法的剪枝搜索策略,掌握分支限界法的算法框架 2、设计并实现问题,掌握分支限界算法。 2.实验环境 java 3.问题描述 给定n种物品和一背包。物品i的重…

Cesium态势标绘专题-位置点(标绘+编辑)

标绘专题介绍:态势标绘专题介绍_总要学点什么的博客-CSDN博客 入口文件:Cesium态势标绘专题-入口_总要学点什么的博客-CSDN博客 辅助文件:Cesium态势标绘专题-辅助文件_总要学点什么的博客-CSDN博客 本专题没有废话,只有代码,代码中涉及到的引入文件方法,从上面三个链…

企业微信在ios机型无法吊起打开个人信息页接口(openUserProfile)

wx.qy.openUserProfile({type: 1,//1表示该userid是企业成员,2表示该userid是外部联系人userid: "wmEQlEGwAAHxbWYDOK5u3Af13xlYAAAA", //可以是企业成员,也可以是外部联系人success: function(res) {// 回调} });遇到的问题:调用打…

动态规划入门第1课

1、从计数到选择 ---- 递推与DP(动态规划) 2、从递归到记忆 ---- 子问题与去重复运算 3、动态规划的要点 第1题 网格路1(grid1) 小x住在左下角(0,0)处,小y在右上角(n,n)处。小x需要通过一段网格路才能到小y家。每次,小x可以选…

macOS mysql 8.0 忘记密码

╰─➤ mysql -V mysql Ver 8.0.33 for macos13.3 on arm64 (Homebrew)mysql.server status mysql.server stopskip-grant-tables 启动mysql ─➤ /opt…

云计算和云架构是什么 有什么用途?

云计算是一种基于互联网的计算方式,它通过网络将计算资源(如计算能力、存储、网络带宽等)以服务的形式提供给用户,并允许用户根据需求进行灵活的资源调配和管理。云计算通常分为三个层次,即基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服…

MongoDB常用语句

MongoDB常用语句 使用创建和删除查询条件查询模糊查询分页排序聚合两表连接 插入 使用 展示数据库 show dbs 或 show databases 查看当前在使用的数据库 db展示数据库下所有表 show collections 或 show tables;终端内容过多,用该指令清屏 cls创建和删除 如果…

[SQL挖掘机] - 比较运算符

介绍: 在 sql 中,比较运算符用于比较表达式或值之间的关系,并生成逻辑真(true)或逻辑假(false)的结果。比较运算符在 sql 查询中扮演着重要的角色,具有以下作用和地位: 条件筛选&a…

【Matlab】基于径向基神经网络的数据回归预测(Excel可直接替换数据)

【Matlab】基于径向基神经网络的数据回归预测(Excel可直接替换数据) 1.模型原理2.数学公式3.文件结构4.Excel数据5.分块代码6.完整代码7.运行结果1.模型原理 基于径向基神经网络(Radial Basis Function Neural Network,RBFNN)的数据回归预测是一种基于神经网络的回归模型…

【Matlab】基于遗传算法优化 BP 神经网络的时间序列预测(Excel可直接替换数据)

【Matlab】基于遗传算法优化 BP 神经网络的时间序列预测(Excel可直接替换数据) 1.模型原理2.文件结构3.Excel数据4.分块代码4.1 arithXover.m4.2 delta.m4.3 ga.m4.4 gabpEval.m4.5 initializega.m4.6 maxGenTerm.m4.7 nonUnifMutation.m4.8 normGeomSel…

使用Redis实现双平面部署的最佳实践

引言: 双平面部署是一种常见的系统架构模式,用于提高系统的可靠性和性能。在这种架构中,拥有相同功能的两个平面同时运行,其中一个平面作为主平面处理请求,而另一个平面则作为备份平面。在传统的双平面部署中&#xf…

操作系统笔记、面试八股(三)—— 系统调用与内存管理

文章目录 3. 系统调用3.1 用户态与内核态3.2 系统调用分类3.3 如何从用户态切换到内核态(系统调用举例) 4. 内存管理4.1 内存管理是做什么的4.1.1 为什么需要虚拟地址空间4.1.2 使用虚拟地址访问内存有什么优势 4.2 常见的内存管理机制4.3 分页管理4.3.1…

Android-WebRTC-实现摄像头显示

EglBase是什么? 它提供了一个接口,用于在Android平台上创建和管理EGL(嵌入式系统图形库)上下文,以便在WebRTC中进行图像和视频的处理和渲染。 Capturer, Source, Track, Sink分别是什么? Capturer&#xff…

2023C语言暑假作业day3

1 选择题 1 已知函数的原型是: int fun(char b[10], int a); ,设定义: char c[10];int d; ,正确的调用语句是 A: fun(c,&d); B: fun(c,d); C: fun(&c,&d); D: fun(&c,d); 答案解析: 正确答案&#x…

kettle开发-Day40-AI分流之case/switch

前言: 前面我们讲到了很多关于数据流的AI方面的介绍,包括自定义组件和算力提升这块的,今天我们来学习一个关于kettle数据分流处理非常重要的组件Switch / Case 。当我们的数据来源于类似日志、csv文件等半结构化数据时,我们需要在…