Docker的镜像

news2025/3/1 23:26:45

目录

  • 1. 镜像是什么??
  • 2. 镜像命令详解
    • 2.1 镜像命令清单
    • 2.2 docker rmi命令
    • 2.3 docker save命令
    • 2.4 docker load命令
    • 2.5 docker history命令
    • 2.6 docker import命令
    • 2.7 docker image prune命令
    • 2.8 docker build命令
  • 3. 镜像的操作
  • 4. 离线迁移镜像
  • 5. 镜像存储的压缩与共享

1. 镜像是什么??

(1)镜像的解析如下:

  • Docker image 本质上是一个 read-only 只读文件, 这个文件包含了文件系统、源码、库文件、依赖、工具等一些运行 application 所必须的文件。
  • 我们可以把 Docker image 理解成一个模板, 可以通过这个模板实例化出来很多容器。
  • image 里面是一层层文件系统 Union FS。联合文件系统,可以将几层目录挂载到一起,形成一个虚拟文件系统。
  • 每一层文件系统我们叫做一层 layer,联合文件系统可以对每一层文件系统设置三种权限,只读(readonly)、读写(readwrite)和写出(whiteout-able),但是 docker镜像中每一层文件系统都是只读的。
  • 构建镜像的时候,从一个最基本的操作系统开始,每个构建的操作都相当于做一层的修改,增加了一层文件系统。一层层往上叠加,上层的修改会覆盖底层该位置的可见性,这也很容易理解,就像上层把底层遮住了一样。当你使用的时候,你只会看到一个完全的整体,你不知道里面有几层,也不清楚每一层所做的修改是什么。

(2)生活案例来理解镜像:

  • 镜像相当于我们 java 或者 C++中的类,相当于一个模板,可以很方便的构建出来不同的对象。

(3)生活案例来理解镜像的分层:

(4)为什么需要镜像:

  • 在部署应用时,通过手工或写一些脚本的方式进行部署。这样部署面临问题就是云端和本地环境一致问题。用户为每个应用打包过程比较繁琐,需要配置和给中修改等操作,非常费劲。
  • 然而, Docker 镜像就是为了解决这个小小的打包功能,突然一夜之间成名。那么,你可能说 Docker 镜像就是个压缩包,是的,你猜对了,它就像一个压缩包文件。它是如何解决 Paas 时代所面临的云端和本地一致性问题?很简单,它是把一个镜像制作成一个完整的操作系统所有文件和对应的目录结构,这样的压缩包是跟你本地和测试环境用的操作系统一摸一样。
  • docker 最大的贡献就是定义了容器镜像的分层的存储格式, docker 镜像技术的基础是联合文件系统(UnionFS),其文件系统是分层的。这样既可以充分利用共享层,又可以减少存储空间占用。
  • docker 镜像提供了一种打包应用程序和预配置服务器环境的便捷方式,可以很方便的将其用于个人用途或与其他 Docker 用户公开共享。

2. 镜像命令详解

2.1 镜像命令清单

(1)整体命令如下:

命令别名功能
docker imagesdocker image ls/docker image list列出本地镜像
docker tagdocker image tag给镜像打标签,可用于推送镜像仓库
docker pulldocker image pull从镜像仓库拉取镜像,和镜像仓库命令相同,也可以归类为镜像操作命令
docker pushdocker image push推送镜像到仓库。和镜像仓库命令相同,也可以归类为镜像操作
docker rmidocker image rm/ docker image remove删除本地镜像
docker builddocker image build通过 dockerfile制作镜像
docker savedocker image save将指定镜像保存成 tar 归档文件
docker loaddocker image load导入使用docker save 命令导出的镜像
docker image inspect查看镜像详细信息
docker historydocker image history查看镜像历史
docker importdocker image import从归档文件docker export中创建镜像。
docker image prune删除不使用的镜像

(2)命令docker images、docker image inspect、docker tag、docker pull、docker push见博客《Docker的镜像仓库》。本文就不在介绍了。

2.2 docker rmi命令

(1)功能:

  • 删除镜像。

(2)语法:

docker rmi [OPTIONS] IMAGE [IMAGE...]

(3)别名:

docker image rm, docker image remove

(4)关键参数:

  • -f:强制删除;
  • –no-prune:不移除该镜像的过程镜像,默认移除;

(5)样例:

root@139-159-150-152:/data/var/lib/docker/overlay2# docker rmi
maxhou/mybusybox:v0.1
Untagged: maxhou/mybusybox:v0.1
Untagged: maxhou/mybusybox@sha256:2c8ed5408179ff4f53242a4bdd2706110ce000be239fe37a61be9c52f704c437

2.3 docker save命令

(1)功能:

  • 将指定镜像保存成 tar 归档文件。

(2)语法:

docker save [OPTIONS] IMAGE [IMAGE...]

(3)别名:

docker image save

(4)关键参数:

  • -o:输出到的文件。

(5)样例:

root@139-159-150-152:/data/myworkdir# docker save -o
mynginx_1.22.1.tar nginx:1.22.1
root@139-159-150-152:/data/myworkdir# ll
total 142756
drwxr-xr-x 2 root root 4096 Mar 13 15:05 ./
drwx--x--x 5 root root 4096 Mar 13 15:03 ../
-rw------- 1 root root 146172416 Mar 13 15:05 mynginx_1.22.1.tar

2.4 docker load命令

(1)功能:

  • 导入使用 docker save 命令导出的镜像。

(2)语法:

docker load [OPTIONS]

(3)别名:

docker image load

(4)关键参数:

  • –input , -i:指定导入的文件,代替 STDIN。
  • –quiet , -q:精简输出信息。

(5)样例:

root@139-159-150-152:/data/myworkdir# docker load -i
mynginx_1.22.1.tar
Loaded image: nginx:1.22.1

2.5 docker history命令

(1)功能:

  • 显示镜像历史。

(2)语法:

docker history [OPTIONS] IMAGE

(3)别名:

docker image history

(4)关键参数:

  • -H , --human:大小和日期采用人容易读的格式展现
  • –no-trunc:显示全部信息,不要隔断;
  • -q, --quiet:只显示镜像 id 信息;

(5)样例:

root@139-159-150-152:/data/myworkdir# docker history nginx:1.21.1
IMAGE CREATED CREATED BYSIZE COMMENT
822b7ec2aaf2 18 months ago /bin/sh -c #(nop) CMD ["nginx" "-g" "daemon… 0B
<missing> 18 months ago /bin/sh -c #(nop) STOPSIGNALSIGQUIT 0B
<missing> 18 months ago /bin/sh -c #(nop) EXPOSE 800B
<missing> 18 months ago /bin/sh -c #(nop) ENTRYPOINT
["/docker-entr… 0B
<missing> 18 months ago /bin/sh -c #(nop) COPY file:09a214a3e07c919a… 4.61kB
<missing> 18 months ago /bin/sh -c #(nop) COPY file:0fd5fca330dcd6a7… 1.04kB
<missing> 18 months ago /bin/sh -c #(nop) COPY file:0b866ff3fc1ef5b0… 1.96kB
<missing> 18 months ago /bin/sh -c #(nop) COPY file:65504f71f5855ca0… 1.2kB
<missing> 18 months ago /bin/sh -c set -x && addgroup --system -… 63.9MB
<missing> 18 months ago /bin/sh -c #(nop) ENVPKG_RELEASE=1~buster 0B
<missing> 18 months ago /bin/sh -c #(nop) ENVNJS_VERSION=0.6.1 0B
<missing> 18 months ago /bin/sh -c #(nop) ENVNGINX_VERSION=1.21.1 0B
<missing> 18 months ago /bin/sh -c #(nop) LABEL maintainer=NGINX Do… 0B
<missing> 18 months ago /bin/sh -c #(nop) CMD ["bash"]0B
<missing> 18 months ago /bin/sh -c #(nop) ADD
file:4ff85d9f6aa246746… 69.3MB

2.6 docker import命令

(1)功能:

  • 从归档文件中创建镜像。

(2)语法:

docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

(3)别名:

docker image import

(4)关键参数:

  • -c:应用 docker 指令创建镜像;
  • -m:提交时的说明文字;

(5)样例:

docker import my_ubuntu_v3.tar maxhou/ubuntu:v4

2.7 docker image prune命令

(1)功能:

  • 删除不使用的镜像。

(2)语法:

docker image prune [OPTIONS]

(3)关键参数:

  • -a , --all:删除全部不使用的镜像;
  • –filter filter:指定过滤条件;
  • -f, --force:不提示是否删除;

(4)样例:

docker image prune

2.8 docker build命令

(1)功能:

  • docker build 命令用于使用 Dockerfile 创建镜像。

(2)语法:

docker build [OPTIONS] PATH | URL | -

(3)关键参数:

  • –build-arg=[]:设置镜像创建时的变量;
  • -f:设指定要使用的 Dockerfile 路径;
  • –label=[]:设设置镜像使用的元数据;
  • –no-cache:设创建镜像的过程不使用缓存;
  • –pull:设尝试去更新镜像的新版本;
  • –quiet, -q:设安静模式,成功后只输出镜像 ID;
  • –tag, -t:设镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
  • –network:设默认 default。在构建期间设置 RUN 指令的网络模式

(4)样例:

docker build -t mynginx:v1 .

3. 镜像的操作

(1)查找镜像:

[xiaomaker@xiaomaker-virtual-machine:docket]$ docker search busybox

(2)下载镜像:

[xiaomaker@xiaomaker-virtual-machine:docket]$ docker pull busybox:1.36.0

(3)查看镜像及列表存储位置:

  • 遍历查看镜像:
[xiaomaker@xiaomaker-virtual-machine:docket]$ docker images busybox
  • 查看镜像仓库在本地的存储信息:
    • 进入/var/lib/docker/目录查看 overlay2/repositories.json 文件,该文件记录已拉取镜像文件的信息。
    • 查看本地镜像,可以发现和 repositories.json 文件记录的信息相同。
[xiaomaker@xiaomaker-virtual-machine:docker]$ cd /var/lib/docker/
  • 镜像过滤:
docker image ls ubuntu 			#根据仓库名列出镜像
docker image ls ubuntu:18.04	#列出特定的某个镜像,也就是说指定仓库名和标签

docker image ls 还支持强大的过滤器参数 --filter,或者简写 -f。之前
我们已经看到了使用过滤器来列出虚悬镜像的用法,它还有更多的用法。查看某个位置之前的镜像 before,查看某个位置之后的镜像 since。

root@139-159-150-152:/data/myworkdir# docker image ls -f
before=ubuntu:18.04
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 16.04 b6f507652425 18 months ago 135MB
root@139-159-150-152:/data/myworkdir# docker image ls -f
since=ubuntu:18.04
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 20.04 e40cf56b4be3 3 weeks ago 72.8M

(4)查看镜像详情:

[xiaomaker@xiaomaker-virtual-machine:docker]$ docker image inspect busybox:1.36.0

(5)查看镜像分层:

  • Docker history 可以查看分层:
[xiaomaker@xiaomaker-virtual-machine:docker]$ docker history busybox:1.36.0
  • docker image inspect 可以查看详细的分层:
[xiaomaker@xiaomaker-virtual-machine:docker]$ docker image inspect busybox:1.36.0
  • 一些镜像下载的时候也可以看到是一层一层下载的:
[xiaomaker@xiaomaker-virtual-machine:docker]$ docker pull nginx:1.21.1 
1.21.1: Pulling from library/nginx
a330b6cecb98: Pull complete
5ef80e6f29b5: Pull complete
f699b0db74e3: Pull complete
0f701a34c55e: Pull complete
3229dce7b89c: Pull complete
ddb78cb2d047: Pull complete
Digest: sha256:a05b0cdd4fc1be3b224ba9662ebdf98fe44c09c0c9215b45f84344c12867002e
Status: Downloaded newer image for nginx:1.21.1 docker.io/library/nginx:1.21.1

(6)打标签:

docker tag busybox:1.36.0
ccr.ccs.tencentyun.com/maxhou6/busyboxbymaxhou:v3.0

(7)推送镜像:

docker pull ccr.ccs.tencentyun.com/maxhou6/busyboxbymaxhou:v3.0

(8)运行容器:

[xiaomaker@xiaomaker-virtual-machine:docker]$ docker run -it --rm

(9)镜像删除:可以根据 id 和名字删除,对于使用的镜像需要先清理容器再删除镜像

[xiaomaker@xiaomaker-virtual-machine:docker]$ docker rmi busybox:1.36.0

4. 离线迁移镜像

(1)服务器 1 上镜像保存为 tar 文件,如操作系统为 ubuntu:

[xiaomaker@xiaomaker-virtual-machine:docker]$ docker save -o busybox.tar busybox
[xiaomaker@xiaomaker-virtual-machine:docker]$ ll
total 147740
drwxr-xr-x 2 root root 4096 Mar 13 16:28 ./
drwx--x--x 5 root root 4096 Mar 13 15:03 ../
-rw------- 1 root root 5101568 Mar 13 16:28 busybox.tar
-rw------- 1 root root 146172416 Mar 13 15:05 mynginx_1.22.1.tar

(2)scp 或者只用使用可视化工具拷贝镜像到第二台服务器上:

[xiaomaker@xiaomaker-virtual-machine:docker]$ scp busybox.tar
root@43.138.218.166:/data/maxhou
The authenticity of host '43.138.218.166 (43.138.218.166)' can't
be established.
ECDSA key fingerprint is
SHA256:ai8KwGyM5W/iocUP8O00OMX7hriCD3ajd3wHVvdazTs.
Are you sure you want to continue connecting
(yes/no/[fingerprint])? yes
Warning: Permanently added '43.138.218.166' (ECDSA) to the list of
known hosts.
root@43.138.218.166's password:
busybox.tar

(3)从 tar 中恢复镜像:

[root@VM-8-12-centos maxhou]# docker load -i busybox.tar
baacf561cfff: Loading layer
[==================================================>]
5.092MB/5.092MB
Loaded image: busybox:1.36.0
[root@VM-8-12-centos maxhou]# docker images
REPOSITORY TAG IMAGE ID CREATED
SIZE
busybox 1.36.0 7cfbbec8963d 3 weeks ago
4.86MB
rabbitmq 3.9-management ef80153df89f 2 months ago
269MB
ubuntu 1.0 955bd67a1123 3 months ago
344MB
myubuntu 1.0 1de21ccbd1a1 3 months ago
344MB
busybox latest 827365c7baf1 3 months ago
4.86MB
redis 7.0 0256c63af7db 3 months ago
117MB
nginx latest 1403e55ab369 3 months ago
142MB
tomcat latest 1dad8c5497f9 4 months ago
474MB
ubuntu latest 6b7dfa7e8fdb 4 months ago
77.8MB
mysql 5.7 d410f4167eea 4 months ago
495MB
maxhou/stress-ng latest ceec0900d3e1 2 years ago
7.34MB
lmmdock/fork-bomb latest fb27e67e6244 2 years ago
934MB
cuilc/mycat latest 2d46917d5584 6 years ago
846MB

(4)执行 docker run 检查镜像是否可以正常运行:

[root@VM-8-12-centos maxhou]# docker run -it --rm busybox:1.36.0
sh
/ #
/ # ls /
bin dev etc home lib lib64 proc root sys tmp
usr var
/ # exit

5. 镜像存储的压缩与共享

(1)拉取 nginx 镜像,如果本地没有,镜像是从仓库拉取,如果有会提示镜像已经存在,并且是最新的。

[xiaomaker@xiaomaker-virtual-machine:docker]$ docker pull nginx:1.21.1
1.21.1: Pulling from library/nginx
Digest:
sha256:a05b0cdd4fc1be3b224ba9662ebdf98fe44c09c0c9215b45f84344c1267002e
Status: Image is up to date for nginx:1.21.1
docker.io/library/nginx:1.21.1

(2)Docker images 查看本地镜像,可以看到该镜像为 142Mb:

[xiaomaker@xiaomaker-virtual-machine:docker]$ docker images
REPOSITORY TAG IMAGE
ID CREATED SIZE
ccr.ccs.tencentyun.com/maxhou/mybusybox v0.2
bab98d58e29e 6 days ago 4.86MB
busybox latest
bab98d58e29e 6 days ago 4.86MB
maxhou/mybusybox v0.1
bab98d58e29e 6 days ago 4.86MB
registry.cn-hangzhou.aliyuncs.com/maxhou/busybox v0.3
bab98d58e29e 6 days ago 4.86MB
grafana/grafana latest
944e84f25bc7 10 days ago 329MB
nginx 1.22.1
8c9eabeac475 11 days ago 142MB
nginx 1.23.3
904b8cb13b93 11 days ago 142MB
ubuntu 22.04
74f2314a03de 11 days ago 77.8MB
hello-world latest
feb5d9fea6a5 17 months ago 13.3kB
nginx 1.21.1
822b7ec2aaf2 18 months ago 133MB

(3)从上面看到 nginx 为 1.21.1 的大小是 140 多 MB,但是我们从 docker hub 上查看可以看到镜像是 50 多 MB,说明发生了压缩,因为仓库到本地需要走网络,所以文件越小越好:

(4)把一个镜像打多个 tag,然后同时推送仓库,可以看到是说层已经存在,不会重复存储:

[xiaomaker@xiaomaker-virtual-machine:docker]$ docker tag nginx:1.22.1
maxhou/mybitnginx:1.22.1
[xiaomaker@xiaomaker-virtual-machine:docker]$ docker tag nginx:1.22.1
maxhou/mybitnginx:1.22.2
[xiaomaker@xiaomaker-virtual-machine:docker]$ docker tag nginx:1.22.1
maxhou/mybitnginx:1.22.3
[xiaomaker@xiaomaker-virtual-machine:docker]$ docker tag nginx:1.22.1
maxhou/mybitnginx:1.22.4
[xiaomaker@xiaomaker-virtual-machine:docker]$ docker push maxhou/mybitnginx -a

(5)添加一个新的镜像到我们的仓库的时候,如果 docker hub 发现已经有了是 mount的,不是从本地推上去的:

[xiaomaker@xiaomaker-virtual-machine:docker]$ docker tag nginx:1.16.1
maxhou/mybitnginx:1.16.1
[xiaomaker@xiaomaker-virtual-machine:docker]$ docker push
maxhou/mybitnginx:1.16.1
The push refers to repository [docker.io/maxhou/mybitnginx]
c23548ea0b99: Mounted from library/nginx
82068c842707: Mounted from library/nginx
c2adabaecedb: Mounted from library/nginx
1.16.1: digest:
sha256:2963fc49cc50883ba9af25f977a9997ff9af06b45c12d968b7985dc1e9254e4b size: 948

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

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

相关文章

【AIGC】ChatGPT保护指令:高效提升GPTs提示词与知识库文件的安全性

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | GPTs应用实例 文章目录 &#x1f4af;前言&#x1f4af;新建未加保护指令的GPTs测试获取GPTs的提示词Prompt指令与知识库文件 &#x1f4af;给GPTs添加保护指令方法一方法二方法三方法四 &#x1f4af;增强GPT…

算法分析与设计之分治算法

文章目录 前言一、分治算法divide and conquer1.1 分治定义1.2 分治法的复杂性分析&#xff1a;递归方程1.2.1 主定理1.2.2 递归树法1.2.3 迭代法 二、典型例题2.1 Mergesort2.2 Counting Inversions2.3 棋盘覆盖2.4 最大和数组2.5 Closest Pair of Points2.6 Karatsuba算法&am…

Verilog实现图像处理的行缓存Line Buffer

在图像处理中&#xff0c;难免会遇到对图像进行卷积或者模板的局部处理&#xff0c;例如ISP中的一些算法&#xff0c;很大部分都需要一个窗口&#xff0c;在实时视频处理中&#xff0c;可以利用行缓存Line buffer可以暂存几行数据&#xff0c;然后同时输出每行中的对应列的像素…

String【Redis对象篇】

&#x1f3c6; 作者简介&#xff1a;席万里 ⚡ 个人网站&#xff1a;https://dahua.bloggo.chat/ ✍️ 一名后端开发小趴菜&#xff0c;同时略懂Vue与React前端技术&#xff0c;也了解一点微信小程序开发。 &#x1f37b; 对计算机充满兴趣&#xff0c;愿意并且希望学习更多的技…

Microsemi Libero SoC免费许可证申请指南(Microchip官网2024最新方法)

点击如下链接&#xff1a; https://www.microchip.com/en-us/products/fpgas-and-plds/fpga-and-soc-design-tools/fpga/licensing 点击右侧&#xff0c;请求免费的License 如果提示登录&#xff0c;请先登录Microchip账号。 点击Request Free License。 选项一年免费的Li…

动态规划子序列问题系列一>最长递增子序列的个数

题目&#xff1a; 解析&#xff1a; 这里求最长递增子序列的长度&#xff0c;请看这篇博客&#xff1a;动态规划子序列问题系列一&#xff1e;最长递增子序列-CSDN博客 这里主要运用&#xff1a;一个小贪心状态转移方程的分析方法完成该题 代码&#xff1a; public int fi…

每天40分玩转Django:Django视图和URL

Django视图和URL 一、课程概述 学习项目具体内容预计用时视图基础函数视图、类视图、视图装饰器90分钟URL配置URL模式、路由系统、命名URL60分钟请求处理请求对象、响应对象、中间件90分钟 二、视图基础 2.1 函数视图 # blog/views.py from django.shortcuts import render…

token失效重新存储发起请求

import axios from axios import { MessageBox, Message } from element-ui import store from /store import Router from /router import { getCookie, setToken, setCookie } from ./auth// 因为后端环境区分v1 v2 剔除测试盛传的环境配置&#xff0c;并添加统一前缀 const …

悬赏任务源码(悬赏发布web+APP+小程序)开发附源码

悬赏任务源码是指一个软件或网站的源代码&#xff0c;用于实现悬赏任务的功能。悬赏任务是指发布方提供一定的奖励&#xff0c;希望能够找到解决特定问题或完成特定任务的人。悬赏任务源码通常包括任务发布、任务接受、任务完成和奖励发放等功能的实现。搭建悬赏任务源码是一个…

【一本通】虫洞

【一本通】虫洞 C语言代码C代码JAVA代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; John在他的农场中闲逛时发现了许多虫洞。虫洞可以看作一条十分奇特的有向边&#xff0c;并可以使你返回到过去的一个时刻&#xff08;相对你进入虫洞之…

Linux之条件变量,信号量,生产者消费者模型

Linux之条件变量&#xff0c;信号量&#xff0c;生产消费者模型&#xff0c;日志以及线程池 一.条件变量1.1条件变量的概念1.2条件变量的接口 二.信号量2.1信号量的重新认识2.2信号量的接口 三.生产者消费者模型3.1生产者消费者模型的概念3.2基于阻塞队列的生产者消费者模型3.3…

如何写出优秀的单元测试?

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 写出优秀的单元测试需要考虑以下几个方面&#xff1a; 1. 测试用例设计 测试用例应该覆盖被测试代码的不同场景和边界情况&#xff0c;以尽可能发现潜在的问题。…

【竞技宝】LOL:JDG官宣yagao离队

北京时间2024年12月13日,在英雄联盟S14全球总决赛结束之后,各大赛区都已经进入了休赛期,目前休赛期也快进入尾声,LPL大部分队伍都开始陆续官宣转会期的动向,其中JDG就在近期正式官宣中单选手yagao离队,而后者大概率将直接选择退役。 近日,JDG战队在官方微博上连续发布阵容变动消…

2024美赛数学建模C题:网球比赛中的动量,用马尔可夫链求解!详细分析

文末获取历年美赛数学建模论文&#xff0c;交流思路模型 接下来讲解马尔可夫链在2024年C题中的运用 1. 马尔科夫链的基本原理 马尔科夫链是描述随机过程的一种数学模型&#xff0c;其核心特征是无记忆性。 简单来说&#xff0c;系统在某一时刻的状态只取决于当前状态&#x…

图形学笔记 - 5. 光线追踪 - RayTracing

Whitted-Style Ray tracing 为什么要光线追踪 光栅化不能很好地处理全局效果 软阴影尤其是当光线反射不止一次的时候 栅格化速度很快&#xff0c;但质量相对较低 光线追踪是准确的&#xff0c;但速度很慢 光栅化&#xff1a;实时&#xff0c;光线追踪&#xff1a;离线~10K …

Nginx之配置防盗链(Configuring Anti-hotlinking in Nginx)

运维小白入门——Nginx配置防盗 什么是防盗链&#xff1a; 防盗链技术主要用于防止未经授权的第三方或域名访问网站的静态资源。例如&#xff0c;一个网站可能拥有独特的图片素材&#xff0c;为了防止其他网站通过直接链接图片URL的方式访问这些图片&#xff0c;网站管理员会采…

51c大模型~合集89

我自己的原文哦~ https://blog.51cto.com/whaosoft/12815167 #OpenAI很会营销 而号称超强AI营销的灵感岛实测成效如何&#xff1f; OpenAI 是懂营销的&#xff0c;连续 12 天发布&#xff0c;每天一个新花样&#xff0c;如今刚过一半&#xff0c;热度依旧不减。 毫无疑问&…

深度学习的unfold操作

unfold&#xff08;展开&#xff09;是深度学习框架中常见的数据操作。与我们熟悉的卷积类似&#xff0c;unfold也是使用一个特定大小的窗口和步长自左至右、自上至下滑动&#xff0c;不同的是&#xff0c;卷积是滑动后与核求乘积&#xff08;所以取名为卷积&#xff09;&#…

Jetpack Compose赋能:以速破局,高效打造非凡应用

Android Compose 是谷歌推出的一种现代化 UI 框架&#xff0c;基于 Kotlin 编程语言&#xff0c;旨在简化和加速 Android 应用开发。它以声明式编程为核心&#xff0c;与传统的 View 系统相比&#xff0c;Compose 提供了更直观、更简洁的开发体验。以下是对 Android Compose 的…

Dual-Write Problem 双写问题(微服务)

原文链接https://www.confluent.io/blog/dual-write-problem/ 双写问题发生于当两个外部系统必须以原子的方式更新时。 问题 说有人到银行存了一笔钱&#xff0c;触发 DepositFunds 命令&#xff0c;DepositFunds 命令被发送到Account microservice。 Account microservice需…