docker基于已有容器和通过Dockerfile进行制作镜像配置介绍
目录
一.制作镜像的两种方式
1.在已有容器中更新并提交这个镜像
2.使用Dockerfile来制作
二.基于容器制作镜像
1.格式
(1)主要格式
(2)可选参数
2.案例
基于容器创建镜像设置标签并进行验证是否可用
(1)运行容器并写入验证内容(改变容器存储层内容)
(2)另起终端制作新镜像(在原有镜像基础上在进行存储层的增量,下次使用此镜像时会参照最新变化)
(3)可以对同一镜像打多次标签,删除时也是直到删除了最后一个标签才算镜像被删除
(4)以新镜像运行新容器验证存储层变动
(5)docker diff 可以查看容器内哪些文件产生变动
基于容器创建新镜像并修改执行命令CMD
3.基于容器制作镜像的缺点
二.基于Dockerfile制作镜像
1.简介
2.相关注意事项
(1)Dockerfile 编写的基本结构
(2)一台主机可以有多个Dockerfile
(3)Dockerfile中指定的所有COPY、ADD等内容都需要与Dockerfile位于同一级目录下
3.Dockerfile指令介绍
(1)FROM
(2)MAINTAINER
(3)COPY
(4)ADD
(5)WORKDIR
(6)RUN
(7)EXPOSE
(8)ENV
(9)VOLUME
(10)CMD
(11)ENTRYPOINT
(12)HEALTHCHECK
(13)ONBUILD
4.制作
(1)主要是使用build命令
(2)案例演示
一.制作镜像的两种方式
1.在已有容器中更新并提交这个镜像
2.使用Dockerfile来制作
二.基于容器制作镜像
1.格式
(1)主要格式
docker commit 参数 容器名称
[root@localhost ~]# docker commit -p bu1
sha256:efbd10d0e00a552f86747a6001323992c030df81338f670f6916c47948e39f74
(2)可选参数
-a | 指定作者 |
-c | 修改dockerfile指令用于创建的镜像 |
-m | 记录本次修改的内容(描述信息) |
-p | 在提交期间暂停容器,默认为true |
2.案例
基于容器创建镜像设置标签并进行验证是否可用
(1)运行容器并写入验证内容(改变容器存储层内容)
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest a416a98b71e2 5 weeks ago 4.26MB
[root@localhost ~]# docker run --name bu1 -it busybox
/ # mkdir /html
/ # echo hello > /html/index.html
/ #
(2)另起终端制作新镜像(在原有镜像基础上在进行存储层的增量,下次使用此镜像时会参照最新变化)
[root@localhost ~]# docker commit -p bu1
sha256:efbd10d0e00a552f86747a6001323992c030df81338f670f6916c47948e39f74
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> efbd10d0e00a 10 seconds ago 4.26MB
busybox latest a416a98b71e2 5 weeks ago 4.26MB
[root@localhost ~]# docker tag efb along/html:v1 #根据ID来打标签
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
along/html v1 efbd10d0e00a 6 minutes ago 4.26MB
busybox latest a416a98b71e2 5 weeks ago 4.26MB
(3)可以对同一镜像打多次标签,删除时也是直到删除了最后一个标签才算镜像被删除
[root@localhost ~]# docker tag efb along/html:v1
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
along/html v1 efbd10d0e00a 6 minutes ago 4.26MB
busybox latest a416a98b71e2 5 weeks ago 4.26MB
[root@localhost ~]# docker tag along/html:v1 along/html:v2
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
along/html v1 efbd10d0e00a 7 minutes ago 4.26MB
along/html v2 efbd10d0e00a 7 minutes ago 4.26MB
busybox latest a416a98b71e2 5 weeks ago 4.26MB
[root@localhost ~]# docker image rm along/html:v2
Untagged: along/html:v2
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
along/html v1 efbd10d0e00a 7 minutes ago 4.26MB
busybox latest a416a98b71e2 5 weeks ago 4.26MB
(4)以新镜像运行新容器验证存储层变动
[root@localhost ~]# docker run --name bu2 -it along/html:v1
/ # cat /html/index.html
hello
/ #
(5)docker diff 可以查看容器内哪些文件产生变动
[root@localhost ~]# docker diff bu1
A /html
A /html/index.html
C /root
A /root/.ash_history
[root@localhost ~]# docker diff bu2
C /root
C /root/.ash_history
基于容器创建新镜像并修改执行命令CMD
基于已有容器常见新镜像并指定执行httpd
[root@localhost ~]# docker commit -c 'CMD ["/bin/httpd","-f","-h","/html"]' -p bu1 along/html:v1
sha256:2c2af15b2f29b03eb3d5d4a03d1680debc7eee3ba6c62d42073edf008e9bd3c0
#["指定httpd服务","-f在前台运行","-h表示后面指定httpd运行的主目录","页面存放目录"]
[root@localhost ~]# docker run --name bu3 -d along/html:v1
36448f483526ed72e74ea4bb3c0ad70a54c13940326bd0c19713acbbffc72738
[root@localhost ~]# docker inspect bu3 | grep -i ipaddress"SecondaryIPAddresses": null,"IPAddress": "172.17.0.3","IPAddress": "172.17.0.3",
[root@localhost ~]# curl 172.17.0.3
hello
3.基于容器制作镜像的缺点
(1)在基于容器制作镜像后,使用容器时自己要修改的文件和一些不希望修改的文件也一起产生变动,数据量一旦大起来就显得极为繁杂
(2)只有自己知道自己在制作时干过什么甚至过段时间自自己都不知道干过什么,难以为进一步的增量操作提供正确参考
(3)基于分层存储下的增量运转模式,随着修改次数的增多,镜像的臃肿程度呈递增状态
二.基于Dockerfile制作镜像
1.简介
2.相关注意事项
(1)Dockerfile 编写的基本结构
(2)一台主机可以有多个Dockerfile
(3)Dockerfile中指定的所有COPY、ADD等内容都需要与Dockerfile位于同一级目录下
3.Dockerfile指令介绍
(1)FROM
FROM centos:6
(2)MAINTAINER
提供镜像制作者的详细信息,一般紧跟FROM之后
FROM centos:6
MAINTAINER "name <name@163.com>"
(3)COPY
复制文件或目录到容器里指定的路径
文件或目录为多个时支持通配符匹配
文件或目录必须是Dockerfile所在路径的上下文目录不能在其父目录
当指定的是目录时,其本身不会被复制但其下的文件或子目录会被递归复制
COPY的文件的权限和修改时间等会被保留
FROM centos:6
MAINTAINER "name <name@163.com>"
COPY index.html /data/web/html/ #这个情况下就要确保存放Dockerfile的同级目录下要有index.html文件,/data/web/html/是目标目录
(4)ADD
类似于COPY指令,支持tar文件和url路径,如果指定的是同是在一个系统上的压缩的tar文件,,其将会被执行类似于“tar -x”的解包操作,而通过url获取的则不会被操作
FROM centos:6
MAINTAINER "name <name@163.com>"
COPY index.html /data/web/html/
ADD xxx.tar.gz /usr/local/src/ #xxx.tar.gz同样放在Dockerfile统计目录,如果是url原地址则直接指定即可
(5)WORKDIR
用于为RUN、CMD、ENTRYPOINT、COPY、ADD指定工作目录,WORKDIR可以出现多次,不存在时会自动创建该目录,也支持ENV定义的变量
FROM centos:6
MAINTAINER "name <name@163.com>"
COPY index.html /data/web/html/
WORKDIR /usr/local/
ADD xxx.tar.gz /usr/local/src/
(6)RUN
指定制作镜像过程中运行的程序,可以是任何命令,直接指定命令通常是一个以“/bin/sh -c”运行shell命令
FROM centos:6
MAINTAINER "name <name@163.com>"
COPY index.html /data/web/html/
WORKDIR /usr/local/
ADD xxx.tar.gz /usr/local/src/
RUN cd ./src && tar -zvxf xxx.tar.gz #表示切换到这个目录解这个包
(7)EXPOSE
声明运行容器时提供服务的端口,端口开放不会由此决定,但会在使用“-P”随机端口运行容器时提供参考,可以以"port/协议"方式来指定传输层协议(tcp/udp),支持同时指定多个端口
FROM centos:6
MAINTAINER "name <name@163.com>"
COPY index.html /data/web/html/
WORKDIR /usr/local/
ADD xxx.tar.gz /usr/local/src/
EXPOSE 80/tcp
RUN cd ./src && tar -zvxf xxx.tar.gz
(8)ENV
为制作镜像定义环境变量,其可以被调用
FROM centos:6
MAINTAINER "name <name@163.com>"
ENV DOC_ROOT=/data/web/html/ #在后面需要使用时就可以通过“$DOC_ROOT”的方式来引用
COPY index.html /data/web/html/
WORKDIR /usr/local/
ADD xxx.tar.gz /usr/local/src/
EXPOSE 80/tcp
RUN cd ./src && tar -zvxf xxx.tar.gz
(9)VOLUME
在制作镜像过程中在image内创建一个挂载点目录来挂载本容器卷或其他容器卷
FROM centos:6
MAINTAINER "name <name@163.com>"
ENV DOC_ROOT=/data/web/html/ #在后面需要使用时就可以通过“$DOC_ROOT”的方式来引用
COPY index.html /data/web/html/
WORKDIR /usr/local/
ADD xxx.tar.gz /usr/local/src/
EXPOSE 80/tcp
VOLUME /data/myweb
RUN cd ./src && tar -zvxf xxx.tar.gz
(10)CMD
类似RUN指令,可以存在多个,可以在Dockerfile构建出新镜像并启动容器时运行任何命令或程序,值为了为启动的容器指定默认运行程序,运行结束该容器也停止,如果与RUN的命令有冲突,可能会被RUN的命令选项覆盖
FROM centos:6
MAINTAINER "name <name@163.com>"
ENV DOC_ROOT=/data/web/html/
COPY index.html /data/web/html/
WORKDIR /usr/local/
ADD xxx.tar.gz /usr/local/src/
EXPOSE 80/tcp
VOLUME /data/myweb
RUN cd ./src && tar -zvxf xxx.tar.gz
CMD /bin/httpd -f -h ${DOC_ROOT} #也可以CMD ["/bin/httpd","-f","-h","${DOC_ROOT}"]
(11)ENTRYPOINT
类似CMD,指定容器运行时的默认程序,不会被RUN命令选项覆盖(除了RUN --entryypoint),作为一个单独的可执行程序。在指定了ENTRYPOINT又指定了CMD后,CMD的内容被当做参数传给ENTRYPOINT指定不再直接运行命令或程序
FROM centos:6
MAINTAINER "name <name@163.com>"
ENV DOC_ROOT=/data/web/html/
COPY index.html /data/web/html/
WORKDIR /usr/local/
ADD xxx.tar.gz /usr/local/src/
EXPOSE 80/tcp
VOLUME /data/myweb
RUN cd ./src && tar -zvxf xxx.tar.gz
ENTRYPOINT /bin/httpd -f -h ${WEB_DOC_ROOT} #也可以像上面CMD那样用“[]”写
(12)HEALTHCHECK
可以实现告知docker怎样检测它是否还在正常运转,只能出现一次,若出现多次只有最后一个生效
可选参数
--interval=DURATION (default:30s) | 隔多久探测一次,默认30s |
--timeout=DURATION (default:30s) | 服务器响应超时时长,默认30s |
--retries=N (default:3) | 标记失败几次将容器视为不正常状态,默认3次 |
返回值含义
0——容器健康
1——容器不健康
FROM centos:6
MAINTAINER "name <name@163.com>"
ENV DOC_ROOT=/data/web/html/
COPY index.html /data/web/html/
WORKDIR /usr/local/
ADD xxx.tar.gz /usr/local/src/
EXPOSE 80/tcp
VOLUME /data/myweb
RUN cd ./src && tar -zvxf xxx.tar.gz
ENTRYPOINT /bin/httpd -f -h ${WEB_DOC_ROOT}
HEALTHCHECK CMD curl xxx.xxx.xxx.xxx:xx #验证某个容器的某个端口
(13)ONBUILD
在Dockerfile中定义一个触发器,后面跟的是RUN、COPY等指定,被指定的指令只有在被当前镜像被作为基础镜像去制作下一级镜像时才会被执行。不能ONBUID嵌套ONBUILD
FROM centos:6
MAINTAINER "name <name@163.com>"
ENV DOC_ROOT=/data/web/html/
COPY index.html /data/web/html/
WORKDIR /usr/local/
ADD xxx.tar.gz /usr/local/src/
EXPOSE 80/tcp
VOLUME /data/myweb
RUN cd ./src && tar -zvxf xxx.tar.gz
ENTRYPOINT /bin/httpd -f -h ${WEB_DOC_ROOT}
HEALTHCHECK CMD curl xxx.xxx.xxx.xxx:xx
ONBUILD RUN echo "<h1>here server2</h1>" >> /data/web/html/index.html
4.制作
(1)主要是使用build命令
docker build 参数 路径
常用可选参数
-t | 指定要创建的目标镜像名称 |
-c | CPU权重 |
-m | 内存限制 |
(2)案例演示
[root@localhost centos]# pwd
/centos
[root@localhost centos]# ll
total 1060
-rw-r--r-- 1 root root 270 Aug 24 21:52 Dockerfile
-rw-r--r-- 1 root root 6 Aug 24 21:16 index.html
-rw-r--r-- 1 root root 1073322 Aug 9 19:20 nginx-1.22.0.tar.gz[root@localhost centos]# vim Dockerfile
FROM busybox:latest
MAINTAINER "sulibao <sulibao2003@163.com>"
ENV DOC_ROOT=/data/web/html/
COPY index.html ${DOC_ROOT}
ADD nginx-1.22.0.tar.gz /usr/local
VOLUME /data/mysql
EXPOSE 8080:80/tcp
RUN ls /usr/local[root@localhost centos]# docker build -t myhttpd ./ #制作镜像
[+] Building 0.3s (9/9) FINISHED docker:default=> [internal] load build definition from Dockerfile 0.0s=> => transferring dockerfile: 250B 0.0s=> [internal] load .dockerignore 0.0s=> => transferring context: 2B 0.0s=> [internal] load metadata for docker.io/library/busybox:latest 0.0s=> [1/4] FROM docker.io/library/busybox:latest 0.0s=> [internal] load build context 0.0s=> => transferring context: 71B 0.0s=> CACHED [2/4] COPY index.html /data/web/html/ 0.0s=> CACHED [3/4] ADD nginx-1.22.0.tar.gz /usr/local 0.0s=> [4/4] RUN ls /usr/local 0.2s=> exporting to image 0.1s=> => exporting layers 0.1s=> => writing image sha256:af6af0f426c763b7b8a521a5fcc24d8d2a2897bb0e5929fe7d72878c9fc7ef52 0.0s=> => naming to docker.io/library/myhttpd [root@localhost centos]# docker run -itd --name web1 -P myhttpd:latest
96e02b52f243e15bdd706ca8e489593d69e66999386cd9fc23ba0e742a499f27
[root@localhost centos]# docker exec -it web1 /bin/sh #运行容器并查看功能是否已经实现
/ # ls /usr/local/
nginx-1.22.0
/ # cd /usr/local/nginx-1.22.0/
/usr/local/nginx-1.22.0 # ls
CHANGES CHANGES.ru LICENSE README auto conf configure contrib html man src
相关文章:
docker基于已有容器和通过Dockerfile进行制作镜像配置介绍
目录 一.制作镜像的两种方式 1.在已有容器中更新并提交这个镜像 2.使用Dockerfile来制作 二.基于容器制作镜像 1.格式 (1)主要格式 (2)可选参数 2.案例 基于容器创建镜像设置标签并进行验证是否可用 (1&…...

2022年09月 C/C++(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
第1题:最长上升子序列 一个数的序列bi,当b1 < b2 < … < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, …, aN),我们可以得到一些上升的子序列(ai1, ai2, …, aiK),这里1 < i1 < i2 &…...

二级MySQL(九)——表格数据处理练习
在Mysql中,可以用INSERT或【REPLACE】语句,向数据库中已一个已有的表中插入一行或多行记录。 在Mysql中,可以用【DELETE】或【TRUNCATE】语句删除表中的所有记录。 在Mysql中,可以用【UPDATE】语句来修改数据表中的记录。 为了完…...
QT ListQvector at赋值出错以及解决办法 QT基础入门【QT存储结构】
1、问题 error: passing const QString as this argument discards qualifiers error: assignment of read-only location vec.QVector<int>::at(0) 在Qt中QList,Qvector一般获取元素都是通过at(index)来获取,但是at()的返回是一个const & 常引用,也就是元素不支…...

STM32 CubeMX (H750)RGB屏幕 LTDC
STM32 CubeMX STM32 RGB888 LTDC STM32 CubeMX一、STM32 CubeMX 设置时钟树LTDC使能设置屏幕参数修改RGB888的GPIO 二、代码部分效果 RGB屏幕线束定义: 一、STM32 CubeMX 设置 时钟树 这里设置的时钟,关于刷新速度 举例子:LCD_CLK24MHz 时…...

Redis问题集合(三)在Redis容器里设置键值对
前言 前提是已经拉取了Redis镜像并创建了对应的容器做个记录,方便后续查看 步骤 查看Redis容器的ID:docker ps -a 进入容器:docker exec -it 容器ID /bin/bash进入redis命令行:redis-cli输入密码:auth 配置密码 查看…...

spark中排查Premature EOF: no length prefix available
报错信息 /07/22 10:20:28 WARN DFSClient: Error Recovery for block BP-888461729-172.16.34.148-1397820377004:blk_15089246483_16183344527 in pipeline 172.16.34.64:50010, 172.16.34.223:50010: bad datanode 172.16.34.64:50010 [DataStreamer for file /bdp/data/u9…...
numpy高级函数之where和extract函数
1 numpy.where() 函数返回输入数组中满足给定条件的元素的索引 ---------------------------------------------------- 代码: n1np.random.randint(10,20,10) n2np.where(n1>15) 结果: [17 15 19 15 12 10 16 11 15 13] #原始数组 (array([…...

用Python写一个武侠游戏
前言 在本教程中,我们将使用Python写一个武侠类的游戏,大的框架全部搭好了,很多元素都可以自己添加,让游戏更丰富 📝个人主页→数据挖掘博主ZTLJQ的主页 个人推荐python学习系列: ☄️爬虫JS逆向系列专栏 -…...

Java --- 异常处理
目录 一、什么是异常 二、异常抛出机制 三、如何对待异常 四、 Java异常体系 4.1、Throwable 4.2、Error 4.2、Exception 4.2.1、编译时异常 4.2.2、运行时期异常 五、异常处理 5.1、捕获异常(try-catch) 5.1.2、catch中异常处理方式 …...

CDN/DCDN(全站加速)排查过程中如何获取Eagle ID/UUID
目录 前言1.通过浏览器直接访问文件时获取Request ID 前言 阿里云CDN/DCDN(全站加速)为接收到的每个请求分配唯一的服务器请求ID,作为关联各类日志信息的标识符。当您在使用CDN/DCDN(全站加速)过程中遇到错误且希望阿里云技术支持提供协助时,需要提交失…...
网络安全应急响应预案培训与演练目的
1、增强网络安全意识 网络安全事故隐患往往“生成”于无形。例如,漏洞或黑客攻 击发生之时,受害方企事业单位可能处于非常危险的境地而无所察 觉,一些内部部门人员的网络安全意识也容易懈怠。但不论是内部 员工的疏忽还是管理上的大意&am…...

2023年高教社杯 国赛数学建模思路 - 复盘:校园消费行为分析
文章目录 0 赛题思路1 赛题背景2 分析目标3 数据说明4 数据预处理5 数据分析5.1 食堂就餐行为分析5.2 学生消费行为分析 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 赛题背景 校园一卡通是集…...

7.Oracle视图创建与使用
1、视图的创建与使用 在所有进行的SQL语句之中,查询是最复杂的操作,而且查询还和具体的开发要求有关,那么在开发过程之中,程序员完成的并不是是和数据库的所有内容,而更多的是应该考虑到程序的设计结构。可以没有一个项…...
rust学习-不安全操作
在 Rust 中,不安全代码块用于避开编译器的保护策略 四种不安全操作 解引用裸指针通过 FFI (Foreign Function Interface,外部语言函数接口)调用函数调用不安全的函数内联汇编(inline assembly)解引用裸指针 原始指针(raw pointer,裸指针)* 和引用 &T 有类似的功…...

RHCE——八、DNS域名解析服务器
RHCE 一、概述1、产生原因2、作用3、连接方式4、因特网的域名结构4.1 拓扑4.2 分类4.3 域名服务器类型划分 二、DNS域名解析过程1、分类2、解析图:2.1 图:2.2 过程分析 三、搭建DNS域名解析服务器1、概述2、安装软件3、/bind服务中三个关键文件4、配置文…...
flink cdc初始全量速度很慢原因和优化点
link cdc初始全量速度很慢的原因之一是,它需要先读取所有的数据,然后再写入到目标端,这样可以保证数据的一致性和顺序。但是这样也会导致数据的延迟和资源的浪费。flink cdc初始全量速度很慢的原因之二是,它使用了Debezium作为捕获…...

论文笔记: MOGRIFIER LSTM
2020 ICLR 修改传统LSTM 当前输入和隐藏状态充分交互,从而获得更佳的上下文相关表达 1 Mogrifier LSTM LSTM的输入X和隐藏状态H是完全独立的 机器学习笔记:GRU_gruc_UQI-LIUWJ的博客-CSDN博客这篇论文想探索,如果在输入LSTM之前…...

Angular中使用drag and drop实现文件拖拽上传,及flask后端接收
效果:拖拽文件到组件上面时 边框变大变红 松手后发送到服务器(或者点击蓝字手动选择文件)并且把文件名显示在框内,美化还没做 html <div class"drapBox"><div id"drop" (dragenter)"dragenter($event)" (dragov…...

Spring Authorization Server入门 (十六) Spring Cloud Gateway对接认证服务
前言 之前虽然单独讲过Security Client和Resource Server的对接,但是都是基于Spring webmvc的,Gateway这种非阻塞式的网关是基于webflux的,对于集成Security相关内容略有不同,且涉及到代理其它微服务,所以会稍微比较麻…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
Pydantic + Function Calling的结合
1、Pydantic Pydantic 是一个 Python 库,用于数据验证和设置管理,通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发(如 FastAPI)、配置管理和数据解析,核心功能包括: 数据验证:通过…...

算术操作符与类型转换:从基础到精通
目录 前言:从基础到实践——探索运算符与类型转换的奥秘 算术操作符超级详解 算术操作符:、-、*、/、% 赋值操作符:和复合赋值 单⽬操作符:、--、、- 前言:从基础到实践——探索运算符与类型转换的奥秘 在先前的文…...

2025-05-08-deepseek本地化部署
title: 2025-05-08-deepseek 本地化部署 tags: 深度学习 程序开发 2025-05-08-deepseek 本地化部署 参考博客 本地部署 DeepSeek:小白也能轻松搞定! 如何给本地部署的 DeepSeek 投喂数据,让他更懂你 [实验目的]:理解系统架构与原…...

EasyRTC音视频实时通话功能在WebRTC与智能硬件整合中的应用与优势
一、WebRTC与智能硬件整合趋势 随着物联网和实时通信需求的爆发式增长,WebRTC作为开源实时通信技术,为浏览器与移动应用提供免插件的音视频通信能力,在智能硬件领域的融合应用已成必然趋势。智能硬件不再局限于单一功能,对实时…...