centos7-docker安装与使用

news2024/11/18 5:39:40

文章目录

  • 一、docker简介
    • 1.1docker应用场景
    • 1.2docker的优点
      • 1.2.1快速,一致地交付应用程序
      • 1.2.2响应式部署和扩展
      • 1.2.3在同一硬件上运行更多工作负载
    • 1.2docker的架构
  • 二、docker的安装
    • 2.1新系统的环境搭建
      • 2.1.1更换yum源
    • 2.2安装docker与卸载
      • 2.2.1yum安装docker
      • 2.2.2docker卸载
  • 三、docker的使用
    • 3.1docker hello world
    • 3.2交互式运行的容器
    • 3.3后台模式运行容器
    • 3.4docker容器的使用
      • 3.4.1获取centos7镜像
      • 3.4.2后台运行容器
      • 3.4.3进入到容器中
      • 3.4.4导出容器快照
      • 3.4.5导入容器快照
      • 3.4.6删除容器
    • 3.5镜像使用
      • 3.5.1列出镜像列表
      • 3.5.2删除镜像列表
      • 3.5.3构建一个新的镜像
    • 3.6容器连接
      • 3.6.1网络端口映射
    • 3.7docker仓库


一、docker简介

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

1.1docker应用场景

  • Web 应用的自动化打包和发布。
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

1.2docker的优点

Docker 是一个用于开发,交付和运行应用程序的开放平台。

Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。

通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

1.2.1快速,一致地交付应用程序

Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。

容器非常适合持续集成和持续交付(CI / CD)工作流程,请考虑以下示例方案:

  • 您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工作。
  • 他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。
  • 当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。
  • 测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。

1.2.2响应式部署和扩展

  • Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。
  • Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。

1.2.3在同一硬件上运行更多工作负载

  • Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,因此您可以利用更多的计算能力来实现业务目标。Docker 非常适合于高密度环境以及中小型部署,而您可以用更少的资源做更多的事情。

1.2docker的架构

docker包括三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
概念说明
Docker 镜像(Images)Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。
Docker 容器(Container)容器是独立运行的一个或一组应用,是镜像运行时的实体。
Docker 客户端(Client)Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。
Docker 主机(Host)一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
Docker RegistryDocker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。
Docker MachineDocker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

二、docker的安装

2.1新系统的环境搭建

2.1.1更换yum源

  • 备份原有的yum源
[root@localhost ~]# cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

在这里插入图片描述

  • 安装wget工具
    我这里用的是虚拟机,直接桥接模式连接的,所以我直接下载阿里云的yum源,所以就需要wget工具。

    (Wget是一个在Linux环境下用于从万维网下载文件的工具,由Hrvoje Niksic开发并后来被移植到包括Windows在内的各个平台。它支持HTTP和FTP协议,以及代理服务器功能,能够自动断点续传并恢复下载。此外,wget还具有用户设置文件".wgetrc",可以读取很多设置,例如代理服务器的设置。基本的语法是:wget [参数列表] URL。)

[root@localhost /]# yum install -y wget

在这里插入图片描述

  • 下载阿里云yum源
[root@localhost /]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

在这里插入图片描述

  • 清除原有的缓存并生成新的缓存
    (清除缓存)
[root@localhost /]# yum clean all

在这里插入图片描述

(生成新的缓存)

[root@localhost /]# yum makecache

在这里插入图片描述

  • 验证阿里云yum源是否生效
[root@localhost /]# yum update -y

在这里插入图片描述

2.2安装docker与卸载

2.2.1yum安装docker

  • 安装依赖软件包
[root@localhost /]# yum install -y yum-utils device-mapper-persistent-data lvm2

在这里插入图片描述

  • 添加docker仓库
[root@localhost /]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

在这里插入图片描述

  • 安装docker引擎
[root@localhost /]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

在这里插入图片描述

  • 启动docker并设置开机自启
[root@localhost /]# systemctl start docker
[root@localhost /]# systemctl enable docker

在这里插入图片描述

  • 查看docker版本
[root@localhost /]# docker --version

在这里插入图片描述

  • 查看docker运行状态
[root@localhost /]# systemctl status docker

在这里插入图片描述
(到此,docker就彻底安装完成,并且成功运行。)

2.2.2docker卸载

  • 卸载Docker软件包。
[root@localhost /]# yum remove docker-ce docker-ce-cli containerd.io

在这里插入图片描述

  • 删除docker所以数据。
[root@localhost /]# rm -rf /var/lib/docker/

在这里插入图片描述

  • 删除Docker配置文件和日志文件。
[root@localhost /]# rm -rf /etc/docker /var/log/docker

在这里插入图片描述

三、docker的使用

3.1docker hello world

Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。

输出Hello world:

[root@localhost ~]# docker run ubuntu:15.10 /bin/echo "hello,world"
  • docker: Docker 的二进制执行文件。
  • run: 与前面的 docker 组合来运行一个容器。
  • ubuntu:15.10 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
  • /bin/echo “Hello world”: 在启动的容器里执行的命令

以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo “Hello world”,然后输出结果。
在这里插入图片描述

3.2交互式运行的容器

通过 docker 的两个参数 -i -t,让 docker 运行的容器实现"对话"的能力:

[root@localhost ~]# docker run -i -t ubuntu:15.10 /bin/bash
root@e42a7d9e1da0:/#
  • -t: 在新容器内指定一个伪终端或终端。
  • -i: 允许你对容器内的标准输入 (STDIN) 进行交互。

注意第二行 root@0123ce188bd8:/#,此时我们已进入一个 ubuntu15.10 系统的容器。

我们尝试在容器中运行命令 cat /proc/version和ls分别查看当前系统的版本信息和当前目录下的文件列表。

root@e42a7d9e1da0:/# cat /proc/version
root@e42a7d9e1da0:/# ls

在这里插入图片描述
通过exit来退出容器

root@e42a7d9e1da0:/# exit

在这里插入图片描述

3.3后台模式运行容器

使用以下命令创建一个以进程方式运行的容器

[root@localhost ~]# docker run -d ubuntu:15.10 /bin/sh -c "while true;do echo hello world;sleep 1; done"

在这里插入图片描述
在输出中,我们没有看到期望的 “hello world”,而是一串长字符

0e32c3d03684084e7a3c8ccea63e75bd75d0921d6cc707c4563d25317abb3654

这个长字符串叫做容器 ID,对每个容器来说都是唯一的,我们可以通过容器 ID 来查看对应的容器发生了什么。

首先,我们需要确认容器有在运行,可以通过 docker ps 来查看:

[root@localhost ~]# docker ps

在这里插入图片描述

  • CONTAINER ID: 容器 ID。

  • IMAGE: 使用的镜像。

  • COMMAND: 启动容器时运行的命令。

  • CREATED: 容器的创建时间。

  • STATUS: 容器状态。
    状态有7种:

      - created(已创建)
      - restarting(重启中)
      - running 或 Up(运行中)
      - removing(迁移中)
      - paused(暂停)
      - exited(停止)
      - dead(死亡)
    
  • PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。

  • NAMES: 自动分配的容器名称。

在宿主主机内使用 docker logs 命令,查看容器内的标准输出:

[root@localhost ~]# docker logs 0e32c3d03684

在这里插入图片描述
停止容器的运行:

[root@localhost ~]# docker stop 0e32c3d03684

在这里插入图片描述

3.4docker容器的使用

3.4.1获取centos7镜像

如果我们本地没有 centos7 镜像,我们可以使用 docker pull 命令来载入 centos7 镜像:

首先查看镜像列表:

[root@localhost ~]# docker search centos7

在这里插入图片描述
拉取centos7的镜像:

[root@localhost ~]# docker pull centos:7

运行以下命令以启动一个新的CentOS 7容器:

[root@localhost ~]# docker run -it --name my_centos7_container centos:7 /bin/bash

参数说明:

  • -i: 交互式操作。
  • -t: 终端。
  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

3.4.2后台运行容器

在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。

这里,我们让centos7在后台运行:

[root@localhost ~]# docker run -d centos:7 /bin/bash

在这里插入图片描述
命令详解:

  • run:启动的意思,Docker命令的一个子命令,用于创建并启动一个新的容器
  • -d:后台运行,加了 -d 参数默认不会进入容器
  • centos:7:image(镜像),要使用的Docker镜像的名称和标签
  • /bin/bash:解释器,使用/bin/bash来启动一个交互式的Bash shell

3.4.3进入到容器中

在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:

  • docker attach
[root@localhost ~]# docker attach 57aaaa97b26e

在这里插入图片描述

  • docker exec:推荐大家使用 docker exec 命令,因为此命令会退出容器终端,但不会导致容器的停止。
[root@localhost ~]# docker exec -it e42a7d9e1da0 /bin/bash

在这里插入图片描述
命令详解:

  • exec:Docker命令的一个子命令,用于在现有容器中执行命令或启动一个新的进程
  • -it:选项,表示以交互模式运行容器,并分配一个伪终端
  • /bin/bash: 这是要在容器内执行的命令,这里使用的是Bash shell

3.4.4导出容器快照

如果要导出本地某个容器,可以使用 docker export 命令。

[root@localhost ~]# docker export e42a7d9e1da0 > ubuntu.tar

在这里插入图片描述
命令详解:

  • docker export e42a7d9e1da0这部分代码的作用是将容器的镜像导出为一个tar文件
  • (重定向)> ubuntu.tar这部分代码将导出的镜像保存到名为ubuntu.tar的文件中

3.4.5导入容器快照

可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1

[root@localhost ~]# cat ubuntu.tar | docker import - test/ubunt:v1

在这里插入图片描述

3.4.6删除容器

删除某一个容器

[root@localhost ~]# docker rm d04050d53e91

在这里插入图片描述
清理掉所有没有在运行状态的容器

[root@localhost ~]# docker container prune

在这里插入图片描述

3.5镜像使用

当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。

3.5.1列出镜像列表

可以使用 docker images 来列出本地主机上的镜像。

[root@localhost ~]# docker images

在这里插入图片描述
解释说明:

  • REPOSITORY:表示镜像的仓库源
  • TAG:镜像的标签
  • IMAGE ID:镜像ID
  • CREATED:镜像创建时间
  • SIZE:镜像大小

(同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如 ubuntu 仓库源里,有 15.10、14.04 等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。)

如果要使用版本为15.10的ubuntu系统镜像来运行容器时,命令如下:

[root@localhost ~]# docker run -t -i ubuntu:15.10 /bin/bash

在这里插入图片描述
解释说明:

  • -i:交互式操作。
  • -t::终端。
  • ubuntu:15.10:这是指用 ubuntu 15.10 版本镜像为基础来启动容器。
  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

(如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像。)

3.5.2删除镜像列表

镜像删除使用 docker rmi 命令,比如我们删除 test/ubunt 镜像:

[root@localhost ~]# docker rmi efee557f2563

在这里插入图片描述

3.5.3构建一个新的镜像

我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。

[root@localhost ~]# cat Dockerfile
FROM centos:7
MAINTAINER yourname <youremail@example.com>
RUN yum -y update && yum clean all
RUN yum install -y httpd
EXPOSE 80
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。

第一条FROM,指定使用哪个镜像源

RUN 指令告诉docker 在镜像内执行命令,安装了什么。

然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。

(注:如果docker中找不到名为"centos:7"的镜像,可以使用一下方法进行下载镜像

docker pull centos:7
docker save -o centos_7.tar centos:7
docker load -i centos_7.tar
1)在目录下运行以下命令构建镜像:
docker build -t myimage .

其中myimage是新镜像的名称,最后的"."表示使用当前目录下的Dockerfile。

2)构建完成后,可以使用以下命令查看新镜像:
docker images
2)运行新镜像:
docker run -d -p 80:80 myimage

(因为这里也是测试,所以就不作图了,不过这些命令完全行的通)

3.6容器连接

3.6.1网络端口映射

首先创建的一个python的容器

[root@localhost /]# docker run -d -P training/webapp python app.py

在这里插入图片描述
使用 -p 标识来指定容器端口绑定到主机端口。

两种方式的区别是:

-P :是容器内部端口随机映射到主机的端口。
-p : 是容器内部端口绑定到指定的主机端口。
[root@localhost /]# docker run -d -p 5000:5000 training/webapp python app.py

在这里插入图片描述

在这里插入图片描述
另外,我们可以指定容器绑定的网络地址,比如绑定 127.0.0.1。

[root@localhost /]# docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py

在这里插入图片描述
这样我们就可以通过访问 127.0.0.1:5001 来访问容器的 5000 端口。

上面的例子中,默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp。

[root@localhost /]# docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py

在这里插入图片描述
docker port 命令可以让我们快捷地查看端口的绑定情况。

[root@localhost /]# docker port musing_gould 5000

3.7docker仓库

仓库(Repository)是集中存放镜像的地方。以下介绍一下 Docker Hub。当然不止 docker hub,只是远程的服务商不一样,操作都是一样的。

Docker Hub
目前 Docker 官方维护了一个公共仓库 Docker Hub。
大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。

注册
在 https://hub.docker.com 免费注册一个 Docker 账号。

登录和退出
登录需要输入用户名和密码,登录成功后,我们就可以从 docker hub 上拉取自己账号下的全部镜像。
在这里插入图片描述

# 登录
[root@bogon ~]# docker login
# 退出
[root@bogon ~]# docker logout

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

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

相关文章

监控大屏 | 拐角OLED柔性屏:实现拐角处连惯拼接显示

监控大屏 | 拐角OLED柔性屏 产品&#xff1a;20块55寸OLED柔性屏 项目时间&#xff1a;2023年10月 项目地点&#xff1a;贵州 应用场景&#xff1a;在监控大厅三面墙都要装显示屏&#xff0c;利用OLED柔性屏可弯曲的特性&#xff0c;在两个捌角处进行拼接安装。 在2023年10…

XML Schema中的attributeFormDefault

XML Schema中的attributeFormDefault属性&#xff0c;用以指定元素的属性默认是否必须带有命名空间前缀。 attributeFormDefault属性可以取值qualified或unqualified&#xff0c;默认值是unqualified。 当取值为qualified时&#xff0c;表示属性必须用命名空间作为前缀&#x…

ASIWebPage数据库抓取代码示例

objective-c #import "ASIWebPageRequest.h" int main(int argc, const char * argv[]) { autoreleasepool { // 创建并设置 NSURL *代理URL [NSURL URLWithString:""]; ASIHTTPRequest *request [ASIHTTPRequest requestW…

蓝桥杯-01简介

文章目录 蓝桥杯简介参考资源蓝桥杯官网第15届大赛章程一、概况&#xff08;一&#xff09;大赛背景和宗旨&#xff08;二&#xff09;大赛特色&#xff08;三&#xff09;大赛项目1.Java软件开发2.C/C程序设计3.Python程序设计4.Web应用开发5.软件测试6.网络安全7.嵌入式设计与…

Mac使用nvm安装低于node16 版本卡死缓慢

在使用M1和M2的时候&#xff0c;采用nvm安装Node16的版本就会出现一直下载卡死&#xff0c;内存增大 一、解决步骤 在简介信息里面勾选 使用Rosetta打开&#xff0c;如图&#xff1a; 然后重启终端&#xff0c;重新使用nvm安装Node16即可成功

Elasticsearch(ES)概述

文章目录 一.什么是Elasticsearch?1.正向索引和倒排索引2.Mysql和ES的概念对比3.安装elasticsearch、kibana 二.IK分词器三.索引库操作四.文档操作五.RestClient操作索引库1.初始化RestClient2.创建索引库3.删除索引库4.判断索引库是否存在 六.RestClient操作文档1.新增文档2.…

基于springboot实现的学生宿舍管理系统

一、系统架构 前端&#xff1a;html | jquery | bootstrap 后端&#xff1a;springboot | spring-data 环境&#xff1a;jdk1.8 | maven | mysql 二、代码及数据库 三、功能介绍 01. 登录页 02. 管理员-首页 03. 管理员-学生管理 04. 管理员-楼宇管理 05. 管理员-宿舍管理 06.…

好用的样式动画库集合(css、js)

文章目录 前言一、Animate.css二、Anime.js三、CSShake四、Hover.css五、AniJS六、Animista七、Tachyons-animate八、Sequence.js九、Infinite十、OBNOXIOUS.CSS十一、MOTION UI十二、Keyframes.app十三、AnimXYZ十四、Whirl十五、Hamburgers十六、Vivify十七、Magic Animation…

【Vue】Linux 运行 npm run serve 报错 vue-cli-service: Permission denied

问题描述 在Linux系统上运行npm run serve命令时&#xff0c;控制台报错&#xff1a; sudo npm run serve project50.1.0 serve vue-cli-service serve sh: 1: vue-cli-service: Permission denied错误截图如下&#xff1a; 原因分析 该错误是由于vue-cli-service文件权限不…

Web前端开发技术:图像与多媒体文件

在现代的Web开发中&#xff0c;图像和多媒体文件在各种网站和应用程序中扮演着至关重要的角色。它们不仅能提供更丰富的内容&#xff0c;还能大大提高应用程序的吸引力和用户体验。本文将深入介绍一些关键的Web前端开发技术&#xff0c;这些技术将有助于开发者在处理图像和多媒…

任意多个磁盘时的kickstart配置方法

最近工作遇到一个需求&#xff1a;当机器中存在任意多个磁盘时&#xff0c;kickstart配置文件应该如何编写&#xff1f; 我查询了一些资料&#xff0c;得到的结果大多是针对特定数量的磁盘的配置&#xff08;比如&#xff0c;2个&#xff0c;3个&#xff09;。 那么假如因为某些…

HarmonyOS 数据持久化 Preferences 如何在页面中对数据进行读写

背景介绍 最近在了解并跟着官方文档尝试做一个鸿蒙app 小demo的过程中对在app中保存数据遇到些问题 特此记录下来 这里的数据持久化以 Preferences为例子展开 废话不多说 这里直接上节目(官方提供的文档示例:) 以Stage模型为例 1.明确preferences的类型 import data_prefer…

类 —— 友元、常/静态成员函数

类 类的大小 和结构体大小求法一致。但需注意&#xff0c;普通空类也会占用 1 字节大小&#xff0c;因为普通空类可以实例化对象。 而 抽象空类占 4 字节&#xff08;32 位机中&#xff09;&#xff0c;因为抽象空类中含有虚指针&#xff08;含有虚函数的非抽象空类同理&am…

云原生实战课大纲<2>

我们pod的数据挂载文件可以使用 pv-pvc的方式 1. 创建pv池 2. 在pv池中创建pv&#xff0c;并且设置pv的模式 3. 编写pod 写对应的pvc 申请书 就可以了这就是我们k8s中的pv和pvc 基于pv池创建pv的时候会有容量限制呢么关于配置呢&#xff0c;我们以前会有这种场景 比如说在dock…

试题与研究编辑部试题与研究杂志社试题与研究杂志2023年第36期目录

试题与研究编辑部试题与研究杂志社试题与研究杂志2023年第36期目录 教海纵横 高中生物教学中启发式教学方法的应用 买玲; 1-3 初中文言文教学传承传统文化精神的策略探索 张志静; 4-6《试题与研究》投稿&#xff1a;cn7kantougao163.com 信息化背景下初中地理高效…

Unity中Shader的BRDF解析(一)

文章目录 前言现在我们主要来看Standard的 漫反射 和 镜面反射一、PBS的核心计算BRDF二、Standard的镜面高光颜色三、具体的BRDF计算对于BRDF的具体计算&#xff0c;在下篇文章中&#xff0c;继续解析 四、最终代码.cginc文件Shader文件 前言 在上篇文章中&#xff0c;我们解析…

OpenGL之Mesa3D编译for Ubuntu20.04(三十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

入金牌投资平台,学先进炒股技术,掌未来宝贵财富

钱是个好东西&#xff0c;它能让人享受到世间的甜&#xff0c;它能让人感受到万众瞩目的荣耀&#xff0c;它能让人得到一切该有的尊敬。可以这么说&#xff0c;没有人不爱钱。可是&#xff0c;君子爱财取之有道。对于正常的人而言&#xff0c;都只希望通过正规的渠道赚到尽可能…

SSL证书是选免费的还是付费的好?

在当今的数字化时代&#xff0c;网络安全已经成为了每个网站和应用程序的重要组成部分。为了保护用户的数据安全&#xff0c;许多网站和应用程序都选择了使用SSL证书。然而&#xff0c;面对市场上的各种SSL证书&#xff0c;用户往往会面临一个问题&#xff1a;SSL证书是选免费的…

抽象类-Java

抽象类 一、父类方法的不确定性二、抽象类介绍三、抽象类细节四、练习题 一、父类方法的不确定性 引入&#xff1a;对于一个动物&#xff0c;不知道它吃什么&#xff0c;比如猫吃鱼&#xff0c;兔子吃萝卜。动物类中的 eat 方法往往由它的子类去具体实现。 class Animal {pub…