当前位置: 首页 > news >正文

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.简介

把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。这就是Dockerfile。
Dockerfile 是一个文本文件,其内包含了一条条的指令,每一条指令会构建一层,每一条
指令的内容是描述该层应当如何构建。

2.相关注意事项

(1)Dockerfile 编写的基本结构

Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,文件名为“Dockerfile”

(2)一台主机可以有多个Dockerfile

要使用多个Dockerfile 创建镜像,可以在不同目录编写Dockerfile,然后在Dockerfile 所在的目录下构新的镜像

(3)Dockerfile中指定的所有COPY、ADD等内容都需要与Dockerfile位于同一级目录下

3.Dockerfile指令介绍

(1)FROM

Dockerfile文件内容以FROM开头,是在构建镜像中指定基础镜像,之后的动作基于FROM指定的基础镜像环境下进行,如果这个镜像在本地主机docker上不存在,将会从docker公共库拉取。在有多个镜像需求时FROM可以出现多次。(特殊空白镜像——scratch,可以直接将编写好的可执行文件放进去进行镜像制作)
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指定要创建的目标镜像名称
-cCPU权重
-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.格式 &#xff08;1&#xff09;主要格式 &#xff08;2&#xff09;可选参数 2.案例 基于容器创建镜像设置标签并进行验证是否可用 &#xff08;1&…...

2022年09月 C/C++(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题&#xff1a;最长上升子序列 一个数的序列bi&#xff0c;当b1 < b2 < … < bS的时候&#xff0c;我们称这个序列是上升的。对于给定的一个序列(a1, a2, …, aN)&#xff0c;我们可以得到一些上升的子序列(ai1, ai2, …, aiK)&#xff0c;这里1 < i1 < i2 &…...

二级MySQL(九)——表格数据处理练习

在Mysql中&#xff0c;可以用INSERT或【REPLACE】语句&#xff0c;向数据库中已一个已有的表中插入一行或多行记录。 在Mysql中&#xff0c;可以用【DELETE】或【TRUNCATE】语句删除表中的所有记录。 在Mysql中&#xff0c;可以用【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屏幕线束定义&#xff1a; 一、STM32 CubeMX 设置 时钟树 这里设置的时钟&#xff0c;关于刷新速度 举例子&#xff1a;LCD_CLK24MHz 时…...

Redis问题集合(三)在Redis容器里设置键值对

前言 前提是已经拉取了Redis镜像并创建了对应的容器做个记录&#xff0c;方便后续查看 步骤 查看Redis容器的ID&#xff1a;docker ps -a 进入容器&#xff1a;docker exec -it 容器ID /bin/bash进入redis命令行&#xff1a;redis-cli输入密码&#xff1a;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() 函数返回输入数组中满足给定条件的元素的索引 ---------------------------------------------------- 代码&#xff1a; n1np.random.randint(10,20,10) n2np.where(n1>15) 结果&#xff1a; [17 15 19 15 12 10 16 11 15 13] #原始数组 (array([…...

用Python写一个武侠游戏

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

Java --- 异常处理

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

CDN/DCDN(全站加速)排查过程中如何获取Eagle ID/UUID

目录 前言1.通过浏览器直接访问文件时获取Request ID 前言 阿里云CDN/DCDN(全站加速)为接收到的每个请求分配唯一的服务器请求ID&#xff0c;作为关联各类日志信息的标识符。当您在使用CDN/DCDN(全站加速)过程中遇到错误且希望阿里云技术支持提供协助时&#xff0c;需要提交失…...

网络安全应急响应预案培训与演练目的

1、增强网络安全意识 网络安全事故隐患往往“生成”于无形。例如&#xff0c;漏洞或黑客攻 击发生之时&#xff0c;受害方企事业单位可能处于非常危险的境地而无所察 觉&#xff0c;一些内部部门人员的网络安全意识也容易懈怠。但不论是内部 员工的疏忽还是管理上的大意&am…...

2023年高教社杯 国赛数学建模思路 - 复盘:校园消费行为分析

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

7.Oracle视图创建与使用

1、视图的创建与使用 在所有进行的SQL语句之中&#xff0c;查询是最复杂的操作&#xff0c;而且查询还和具体的开发要求有关&#xff0c;那么在开发过程之中&#xff0c;程序员完成的并不是是和数据库的所有内容&#xff0c;而更多的是应该考虑到程序的设计结构。可以没有一个项…...

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、解析图&#xff1a;2.1 图&#xff1a;2.2 过程分析 三、搭建DNS域名解析服务器1、概述2、安装软件3、/bind服务中三个关键文件4、配置文…...

flink cdc初始全量速度很慢原因和优化点

link cdc初始全量速度很慢的原因之一是&#xff0c;它需要先读取所有的数据&#xff0c;然后再写入到目标端&#xff0c;这样可以保证数据的一致性和顺序。但是这样也会导致数据的延迟和资源的浪费。flink cdc初始全量速度很慢的原因之二是&#xff0c;它使用了Debezium作为捕获…...

论文笔记: MOGRIFIER LSTM

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

Angular中使用drag and drop实现文件拖拽上传,及flask后端接收

效果&#xff1a;拖拽文件到组件上面时 边框变大变红 松手后发送到服务器(或者点击蓝字手动选择文件)并且把文件名显示在框内&#xff0c;美化还没做 html <div class"drapBox"><div id"drop" (dragenter)"dragenter($event)" (dragov…...

Spring Authorization Server入门 (十六) Spring Cloud Gateway对接认证服务

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

ShapeOfView贡献指南:如何为开源项目添加新的自定义形状

ShapeOfView贡献指南&#xff1a;如何为开源项目添加新的自定义形状 【免费下载链接】ShapeOfView Give a custom shape to any android view, Material Design 2 ready 项目地址: https://gitcode.com/gh_mirrors/sh/ShapeOfView ShapeOfView是一款强大的Android开源库…...

ssm+java2026年毕设私人医生预约系统【源码+论文】

本系统&#xff08;程序源码&#xff09;带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、选题背景关于在线医疗问诊服务的研究&#xff0c;现有研究主要以综合性互联网医疗平台的宏观发展分析为主&#xff0c;专门针对基于SSM…...

gemeni 生成图片的提示词

[System / Prompt]You are an illustration assistant specialized in creating hand-drawn cartoon-style infographics. Follow all rules below strictly and without deviation.&#x1f3a8; STYLE RULES&#xff08;风格规则&#xff09;Use a pure hand-drawn illustrat…...

破解B站评论区识人困境!B站成分检测器让用户画像识别效率飙升8倍

破解B站评论区识人困境&#xff01;B站成分检测器让用户画像识别效率飙升8倍 【免费下载链接】bilibili-comment-checker B站评论区自动标注成分&#xff0c;支持动态和关注识别以及手动输入 UID 识别 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-comment-checke…...

AI教材生成强力工具!低查重保障,让教材编写事半功倍!

梳理教材知识点确实是一项“精细活”&#xff0c;最大的挑战在于平衡和衔接知识之间的关系。如果不小心&#xff0c;很可能会遗漏一些核心知识点&#xff0c;或者在难度的把控上出现问题——小学教材常常写得过于复杂&#xff0c;让学生难以理解&#xff1b;而高中教材又可能显…...

MobaXterm远程连接频繁掉线?3个SSH保活设置让你告别断连烦恼

MobaXterm远程连接频繁掉线&#xff1f;3个SSH保活设置让你告别断连烦恼 当你在深夜调试代码&#xff0c;或是处理关键服务器运维任务时&#xff0c;突然弹出的"Connection closed"提示足以让人抓狂。MobaXterm作为Windows平台最受欢迎的全能终端工具&#xff0c;其免…...

低功耗电源开关电路设计与MCU控制实现

1. 经典电源开关电路设计与分析1.1 系统架构概述该电源开关电路采用三级晶体管控制架构&#xff0c;实现以下核心功能&#xff1a;低功耗待机模式&#xff08;静态电流<10μA&#xff09;按键触发启动机制MCU控制的自锁功能软件可控的电源关断系统工作电压为9V输入&#xff…...

示波器安全操作与高压测量实践指南

示波器安全使用指南&#xff1a;从基础操作到高压测量实践1. 示波器使用安全概述示波器作为电子工程师的核心调试工具&#xff0c;其正确使用直接关系到测量结果的准确性和操作人员的人身安全。在实际工程应用中&#xff0c;约35%的测量事故源于不规范的示波器操作&#xff0c;…...

OpenRGB:一键终结RGB灯光混乱,开源免费的多品牌设备统一控制方案

OpenRGB&#xff1a;一键终结RGB灯光混乱&#xff0c;开源免费的多品牌设备统一控制方案 【免费下载链接】OpenRGB Open source RGB lighting control that doesnt depend on manufacturer software. Supports Windows, Linux, MacOS. Mirror of https://gitlab.com/CalcProgra…...

多智能体协作四大架构模式:Subagents/Skills/Handoffs/Router完全指南

← 上一篇&#xff1a;AI大模型3月终局&#xff1a;商业化转向、智能体崛起与安全红线 → 下一篇&#xff1a;大模型推理加速2026&#xff1a;从500ms到80ms的完整优化路径 摘要 当单个 AI Agent 无法高效处理复杂任务时&#xff0c;多智能体系统&#xff08;Multi-Agent Sys…...