怎样原生制作lis的CentOS容器镜像

news2024/11/27 10:27:41

本文介绍从一个空白的裸机CentOS自己构造检验允许的docker环境。来达到运行环境的高度定制,而不是只能依赖VS或者微软或者数据库厂商提供的镜像当做基础制作。更容易理解基础原理。最终输出产物为lisnew.tar,一个开箱即用的lis运行环境。

制作的整个过程的Shell日志

由于微软提供的docker镜像是debian系统的,俺不想用,加上我想试试自己从裸机做镜像

#先查看可用的centos镜像
[root@localhost zlzdocker]# docker search centos
NAME                                         DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
centos                                       DEPRECATED; The official build of CentOS.        7614      [OK]       
kasmweb/centos-7-desktop                     CentOS 7 desktop for Kasm Workspaces             38                   
bitnami/centos-base-buildpack                Centos base compilation image                    0                    [OK]
couchbase/centos7-systemd                    centos7-systemd images with additional debug…   8                    [OK]
continuumio/centos5_gcc5_base                                                                 3                    
datadog/centos-i386                                                                           0                    
dokken/centos-7                              CentOS 7 image for kitchen-dokken                5                    
dokken/centos-8                              CentOS 8 image for kitchen-dokken                3                    
spack/centos7                                CentOS 7 with Spack preinstalled                 1                    
dokken/centos-6                              EOL: CentOS 6 image for kitchen-dokken           0                    
atlas/centos7-atlasos                        ATLAS CentOS 7 Software Development OS           0                    
couchbase/centos-72-java-sdk                                                                  0                    
spack/centos6                                CentOS 6 with Spack preinstalled                 1                    
couchbase/centos-72-jenkins-core                                                              0                    
ustclug/centos                               Official CentOS Image with USTC Mirror           0                    
couchbase/centos-70-sdk-build                                                                 0                    
couchbase/centos-69-sdk-build                                                                 0                    
couchbase/centos-69-sdk-nodevtoolset-build                                                    0                    
dokken/centos-stream-8                                                                        4                    
eclipse/centos_jdk8                          CentOS, JDK8, Maven 3, git, curl, nmap, mc, …   5                    [OK]
adoptopenjdk/centos7_build_image                                                              1                    
corpusops/centos-bare                        https://github.com/corpusops/docker-images/      0                    
dokken/centos-stream-9                                                                        6                    
corpusops/centos                             centos corpusops baseimage                       0                    
adoptopenjdk/centos6_build_image                                                              0                    

然后拉取最新的centos镜像

[root@localhost zlzdocker]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos

Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest

然后用centos镜像创建一个容器叫lis

[root@localhost zlzdocker]# docker run -idt -p 5002:5002 -p 8081:8081 --name=lis -v /dthealth/app/dthis/imedicallis:/dthealth/app/dthis/imedicallis  centos
fc99e3ba248f97cc833e57dcb91ad90c973a6f32d609b4ae3ff48ecdf6b55eea
docker: Error response from daemon: driver failed programming external connectivity on endpoint lis (2b338616934b737a9aff8cfab4637bf5425f6357cb4600a058f780bec9c1788b): Bind for 0.0.0.0:8081 failed: port is already allocated.
[root@localhost zlzdocker]# docker ps -a
CONTAINER ID   IMAGE             COMMAND                   CREATED             STATUS                   PORTS                                                                                  NAMES
fc99e3ba248f   centos            "/bin/bash"               11 seconds ago      Created                                                                                                         lis
7806efbc0a25   imedicallis:9.0   "dotnet /dthealth/ap…"   About an hour ago   Up About an hour         0.0.0.0:5002->5002/tcp, :::5002->5002/tcp, 0.0.0.0:8081->8081/tcp, :::8081->8081/tcp   imedicallis
f87c5bb32393   nginx             "/docker-entrypoint.…"   3 hours ago         Exited (0) 3 hours ago                                                                                          nginx3
6e55d8e750ca   nginx             "/docker-entrypoint.…"   4 hours ago         Exited (0) 3 hours ago                                                                                          nginx1
61208409f5ca   nginx             "/docker-entrypoint.…"   4 hours ago         Exited (0) 3 hours ago   

然后进入容器安装环境发现无法使用yum仓库

[root@localhost zlzdocker]# docker exec -it lis /bin/bash
[root@fc99e3ba248f /]# 
[root@fc99e3ba248f /]# 
[root@fc99e3ba248f /]# 
[root@fc99e3ba248f /]# 
[root@fc99e3ba248f /]# 
[root@fc99e3ba248f /]# ls
bin  dev  dthealth  etc  home  lib  lib64  lost+found  media  mnt  opt	proc  root  run  sbin  srv  sys  tmp  usr  var
[root@fc99e3ba248f /]# yum install dotnet-sdk-6.0
Failed to set locale, defaulting to C.UTF-8

解决yum源的问题,wget这些没有,也没法安装,我通过共享目录拷的阿里云的yum源文件操作的

[root@fc99e3ba248f /]# wget -O /etc/yum.repos.d/CentOS-Linux-BaseOS.repo http://mirrors.aliyun.com/repo/Centos-8.repo
bash: wget: command not found
[root@fc99e3ba248f /]# mv /dthealth/app/dthis/imedicallis/CentOS-Linux-BaseOS.repo /etc/yum.repos.d/
mv: overwrite '/etc/yum.repos.d/CentOS-Linux-BaseOS.repo'? y
[root@fc99e3ba248f /]# yum makecache
Failed to set locale, defaulting to C.UTF-8
Repository extras is listed more than once in the configuration
CentOS Linux 8 - AppStream                                                                                                                                                                       81  B/s |  38  B     00:00    
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
[root@fc99e3ba248f /]# cat /etc/yum.repos.d/CentOS-Linux-BaseOS.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#
 
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
#failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/BaseOS/$basearch/os/
        http://mirrors.aliyuncs.com/centos/$releasever/BaseOS/$basearch/os/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/BaseOS/$basearch/os/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
 
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
#failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/os/
        http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/os/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/os/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
 
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
#failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/os/
        http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/os/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/os/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
 
[PowerTools]
name=CentOS-$releasever - PowerTools - mirrors.aliyun.com
#failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/PowerTools/$basearch/os/
        http://mirrors.aliyuncs.com/centos/$releasever/PowerTools/$basearch/os/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/PowerTools/$basearch/os/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official


[AppStream]
name=CentOS-$releasever - AppStream - mirrors.aliyun.com
#failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/AppStream/$basearch/os/
        http://mirrors.aliyuncs.com/centos/$releasever/AppStream/$basearch/os/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/AppStream/$basearch/os/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
[root@fc99e3ba248f /]# yum repolist
Failed to set locale, defaulting to C.UTF-8
Repository extras is listed more than once in the configuration
repo id                                                                                         repo name
AppStream                                                                                       CentOS-8 - AppStream - mirrors.aliyun.com
appstream                                                                                       CentOS Linux 8 - AppStream
base                                                                                            CentOS-8 - Base - mirrors.aliyun.com
extras                                                                                          CentOS-8 - Extras - mirrors.aliyun.com
[root@fc99e3ba248f /]# yum makecache
Failed to set locale, defaulting to C.UTF-8
Repository extras is listed more than once in the configuration
CentOS Linux 8 - AppStream                                                                                                                                                                       85  B/s |  38  B     00:00    
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
[root@fc99e3ba248f /]# cd /etc/yum.repos.d/
[root@fc99e3ba248f yum.repos.d]# sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
[root@fc99e3ba248f yum.repos.d]# sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
[root@fc99e3ba248f yum.repos.d]# yum update
Failed to set locale, defaulting to C.UTF-8
Repository extras is listed more than once in the configuration
CentOS Linux 8 - AppStream                                                                                                                                                                      628 kB/s | 8.4 MB     00:13    
CentOS-8 - Base - mirrors.aliyun.com                                                                                                                                                            1.1 MB/s | 4.6 MB     00:04    
CentOS-8 - Extras - mirrors.aliyun.com                                                                                                                                                           72 kB/s |  10 kB     00:00    
CentOS-8 - AppStream - mirrors.aliyun.com                                                                                                                                                       802 kB/s | 8.4 MB     00:10    
Dependencies resolved.
================================================================================================================================================================================================================================
 Package                                                         Architecture                               Version                                                         Repository                                     Size
================================================================================================================================================================================================================================
Upgrading:
 bash                                                            x86_64                                     4.4.20-2.el8                                                    base                                          1.5 M
 bind-export-libs                                                x86_64                                     32:9.11.26-6.el8                                                base                                          1.1 M
 binutils                                                        x86_64                                     2.30-108.el8_5.1                                                base                                          5.8 M
 ca-certificates                                                 noarch                                     2021.2.50-80.0.el8_4                                            base                                          390 k
 centos-gpg-keys                                                 noarch                                     1:8-3.el8                                                       base                                           12 k
 centos-linux-release                                            noarch                                     8.5-1.2111.el8                                                  base                                           22 k
 centos-linux-repos              

解决完了就可以用yum安装.net运行时了,也能安装C++那些编译环境了,和Linux一样编译libgdiplus包,细节参照红帽8.5编译libgdiplus。依赖的dotnet环境和libgdiplus都搞好后准备制作镜像文件。

[root@fc99e3ba248f testdraw]# dotnet lisdrawtest.dll
此程序为imedicallis提供用于测试linux下dotnetcore绘图环境
创建位图
创建画笔
填充白色
创建Pen
画一条竖线
画一条横线
创建字体
创建画刷
绘制字符串
测试.jpg
测试.bmp
测试.gif
保存文件到:/testdraw/lisdrawtest.bmp
保存文件到:/testdraw/lisdrawtest.jpg
保存文件到:/testdraw/lisdrawtest.jpg
测试完成,如果成功生成图片那么环境可用
[root@fc99e3ba248f testdraw]# cp /dthealth/app/dthis/imedicallis/tool/imedicallis /usr/bin  

提交容器修改到镜像,就多了一个centos:latest的镜像,然后改名为lis:9.0

[root@localhost zlzdocker]# docker commit -a "zhanglianzhu" -m "lis9.0" lis centos
sha256:d506d0783711c47869758d132dd0ff05ab1e5b121248cc4ed5d00a8b97dbad09
[root@localhost zlzdocker]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED          SIZE
centos        latest    d506d0783711   18 seconds ago   1.67GB
imedicallis   9.1       149406465334   2 hours ago      208MB
zlznginx      1.0       448f5d1d8e1a   6 hours ago      187MB
imedicallis   9.0       edd4d70c03a3   8 days ago       208MB
nginx         latest    021283c8eb95   2 weeks ago      187MB
centos        <none>    5d0da3dc9764   22 months ago    231MB
[root@localhost zlzdocker]# docker tag centos:latest lis:9.0
[root@localhost zlzdocker]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
centos        latest    d506d0783711   6 minutes ago   1.67GB
lis           9.0       d506d0783711   6 minutes ago   1.67GB
imedicallis   9.1       149406465334   2 hours ago     208MB
zlznginx      1.0       448f5d1d8e1a   6 hours ago     187MB
imedicallis   9.0       edd4d70c03a3   8 days ago      208MB
nginx         latest    021283c8eb95   2 weeks ago     187MB
centos        <none>    5d0da3dc9764   22 months ago   231MB

把镜像保存为文件

[root@localhost zlzdocker]# docker save -o lis.tar lis

[END] 2023/7/20 15:27:26

由于这是我搞的centos原生的镜像,所以没有ENTRYPOINT指定启动名称,需要我再处理一次加了启动指令

制作基于lis:9.0的Dockerfile文件

#构造imedicallis的docker镜像
#基础镜像
FROM lis:9.0 AS base

#MAINTAINER 维护者信息
MAINTAINER zhanglianzhu

#工作路径
WORKDIR /

#对外端口
EXPOSE 5002
EXPOSE 8081

#映射路径
VOLUME ["/dthealth/app/dthis/imedicallis"]

#启动容器执行的命令
ENTRYPOINT ["dotnet", "/dthealth/app/dthis/imedicallis/iMedicalLIS.dll","--urls","https://*:5002"]

载入镜像文件lis.tar,然后基于上面的Dockerfile创建新的镜像lisnew,并且创建容器测试站点

[root@localhost zlzdocker]# 
[root@localhost zlzdocker]# 
[root@localhost zlzdocker]# docker load -i /zlzdocker/lis.tar
Loaded image: lis:9.0
[root@localhost zlzdocker]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
lis          9.0       d506d0783711   40 minutes ago   1.67GB
nginx        latest    021283c8eb95   2 weeks ago      187MB
centos       <none>    5d0da3dc9764   22 months ago    231MB
[root@localhost zlzdocker]# docker build -t lisnew:9.0 .
[+] Building 2.7s (5/5) FINISHED                                                                                                                                                                                 docker:default
 => [internal] load .dockerignore                                                                                                                                                                                          0.4s
 => => transferring context: 2B                                                                                                                                                                                            0.0s
 => [internal] load build definition from Dockerfile                                                                                                                                                                       0.5s
 => => transferring dockerfile: 486B                                                                                                                                                                                       0.1s
 => [internal] load metadata for docker.io/library/lis:9.0                                                                                                                                                                 0.0s
 => CACHED [1/2] FROM docker.io/library/lis:9.0                                                                                                                                                                            0.0s
 => exporting to image                                                                                                                                                                                                     0.3s
 => => exporting layers                                                                                                                                                                                                    0.0s
 => => writing image sha256:4d0e66e949d13b9101d2bb0fc9bfe70a6eda8f9130ae96b13c7592a2591bd393                                                                                                                               0.1s
 => => naming to docker.io/library/lisnew:9.0                                                                                                                                                                              0.2s
[root@localhost zlzdocker]# cat Dockerfile 
#构造imedicallis的docker镜像
#基础镜像
FROM lis:9.0 AS base

#MAINTAINER 维护者信息
MAINTAINER zhanglianzhu

#工作路径
WORKDIR /

#对外端口
EXPOSE 5002
EXPOSE 8081

#映射路径
VOLUME ["/dthealth/app/dthis/imedicallis"]

#启动容器执行的命令
ENTRYPOINT ["dotnet", "/dthealth/app/dthis/imedicallis/iMedicalLIS.dll","--urls","https://*:5002"][root@localhost zlzdocker]# 
[root@localhost zlzdocker]# 
[root@localhost zlzdocker]# 
[root@localhost zlzdocker]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
lis          9.0       d506d0783711   40 minutes ago   1.67GB
lisnew       9.0       4d0e66e949d1   40 minutes ago   1.67GB
nginx        latest    021283c8eb95   2 weeks ago      187MB
centos       <none>    5d0da3dc9764   22 months ago    231MB
[root@localhost zlzdocker]# docker run -idt -p 5002:5002 -p 8081:8081 --name=lisnew -v /dthealth/app/dthis/imedicallis:/dthealth/app/dthis/imedicallis  lisnew:9.0
2f99295c04fd45774cdb597818f07eb8aafe13401a4bf6617234834818e21c78
[root@localhost zlzdocker]# docker ps -a
CONTAINER ID   IMAGE        COMMAND                   CREATED         STATUS         PORTS                                                                                  NAMES
2f99295c04fd   lisnew:9.0   "dotnet /dthealth/ap…"   8 seconds ago   Up 5 seconds   0.0.0.0:5002->5002/tcp, :::5002->5002/tcp, 0.0.0.0:8081->8081/tcp, :::8081->8081/tcp   lisnew
[root@localhost zlzdocker]# 

站点正常
在这里插入图片描述

然后把新的lisnew镜像打包成文件,以后别人拿到lisnew.tar镜像文件后就只需要load和创建容器即可

[root@localhost zlzdocker]# docker save -o lisnew.tar lisnew

最终部署时候如果有docker环境的话只需要执行下面两个命令即可得到全部的lis运行环境运行。在宿主机器映射的目录放网站文件即可。这样不同组对dotnet版本要求不同,对其他环境依赖不同就可以隔离了,以后发版只要发布lisnew.tar即可,宿主可以是任意安装docker的Linux

docker load -i /zlzdocker/lisnew.tar
docker run -idt -p 5002:5002 -p 8081:8081 --name=lisnew -v /dthealth/app/dthis/imedicallis:/dthealth/app/dthis/imedicallis  lisnew:9.0

压缩导出和导入

#压缩导出
docker save lisdocker:latest | gzip > lisdocker.tar.gz
#压缩导入
gunzip -c lisdocker.tar.gz | docker load

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

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

相关文章

自动驾驶分级和技术架构

标题SAE 和 NHTSA自动驾驶分级 当前全球汽车行业中两个最权威的分级系统由美国国家公路交通安全管理局&#xff08;NHTSA&#xff09;和国际自动化工程师协会(SAE)提出。2013年&#xff0c;NHTSA将驾驶自动化的描述分为5个层级。2014年1月&#xff0c;SAE制定J3016自动驾驶分级…

【深度学习-神经网络架构-通俗易懂的入门课程】

文章目录 深度学习与AI的关系机器学习的流程机器学习的核心以及问题深度学习要解决的问题模型如何搭建&#xff1f;特征如何提取&#xff1f;为什么要深度学习&#xff1f; 深度学习的应用深度学习的问题计算机视觉任务分类与检索如何实现分类 神经网络基础线性函数损失函数防止…

Golang 中的可测试示例函数(Example Function)详解

Golang 可测试示例含函数 (Example Function) 示例函数类似于单元测试函数&#xff0c;但没有 *testing 类型的参数。编写示例函数也是很容易的&#xff1a; 创建对应的测试文件&#xff1a;在 Go 项目的源代码目录下创建一个新的文件&#xff08;和被测代码文件在同一个包&…

Java 知识合集 | 多线程与并发

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是 DevO…

C++初阶之内存分布

C/C内存管理 C/C内存分布C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free1.malloc和free2.calloc3.realloc4.常见的动态内存错误 C内存管理方式1.new/delete操作内置类型2.new和delete操作自定义类型3.new和malloc使用上的区别 operator new与operator delete函…

设计模式: 23重设计模式

设计模式 设计模式概述设计模式的概念设计模式的组成23种设计模式设计模式与软件架构设计模式分类创建型设计模式结构型设计模式行为型设计模式 设计模式概述 在20世纪70年代&#xff0c;Christopher Alexander 提出了城市建筑的模式&#xff0c;他认为&#xff1a;模式是描述…

Windows的内部结构API

Windows内部结构 由于 Windows 机器构成了企业基础设施的大部分&#xff0c;红队需要了解 Windows 的内部结构以及如何&#xff08;滥用&#xff09;使用它们。在制作攻击性工具或漏洞利用时&#xff0c;红队可以滥用这些来帮助规避和利用。 进程 进程维护并代表程序的执行&…

Abaqus 中的步进、增量、迭代和尝试概念 硕迪科技

Abaqus 中的步进、增量、迭代和尝试等可能会在概念上让 Abaqus 初学者感到困惑。清楚地了解分析步骤、荷载增量和迭代之间的区别非常重要。在这篇文章中快速了解 Abaqus 步骤和增量迭代。 在ABAQUS中&#xff0c;步进增量迭代是解决非线性问题的一种数值计算方法。这种方法通常…

【分布式】1、CAP 理论 | 一致性、可用性、分区容忍性

文章目录 一、CAP 理论1.1 Consistency 一致性1.2 Availbility 可用性1.3 Partition Tolerance 分区容忍性1.4 CAP 应用1.4.1 CP1.4.2 AP 二、CAP 实践2.1 ACID2.2 BASE 一、CAP 理论 是 2002 年证明的定理&#xff0c;原文&#xff0c;内容如下&#xff1a; In a distributed…

Day52: 84.柱状图中最大的矩形

84.柱状图中最大的矩形 84. 柱状图中最大的矩形 - 力扣&#xff08;LeetCode&#xff09; 思路 本题是要找每个柱子左右两边第一个小于该柱子的柱子&#xff0c;所以从栈头&#xff08;元素从栈头弹出&#xff09;到栈底的顺序是从大到小的顺序。例&#xff1a; 三种情况&a…

安装 VNC 服务器-iTOPRK3588开发板

开发板联网以后&#xff0c;在串口终端输入以下命令&#xff1a; sudo apt-get update sudo apt-get upgrade sudo apt-get install tightvncserver apt-get install xfonts-base 安装完毕之后&#xff0c;在串口终端输入以下命令运行 vnc tightvncserver 然后要求设置密…

算法专题:投票法

文章目录 169.多数元素&#xff08;找频率>n/2&#xff0c;且多数元素一定存在&#xff09;思路完整版补充&#xff1a;注意点 面试题 17.10. 主要元素&#xff08;找频率>n/2&#xff0c;但多数元素不一定存在&#xff09;思路完整版 229.多数元素Ⅱ&#xff08;找频率&…

“智能文件批量改名工具:轻松去除文件名中的特殊符号“

您是否曾经为繁杂的文件命名而感到困扰&#xff1f;特殊符号导致文件名混乱难辨&#xff0c;给您的工作和学习带来不便&#xff1f;现在&#xff0c;我们的智能文件批量改名工具为您解决这一难题&#xff01; 首先&#xff0c;我们要进行文件批量改名高手主页面&#xff0c;并…

基于Docker容器安装TensorFlow测试GPU

前言 当基于nvidia gpu开发的docker镜像在实际部署时&#xff0c;需要先安装nvidia docker。安装nvidia docker前需要先安装原生docker compose 1. CentOS7安装docker详细教程 安装docker 1. Docker 要求 CentOS 系统的内核版本高于 3.10 &#xff0c;查看本页面的前提条件来验…

【iOS】CALayer的理解与简单使用

文章目录 前言一、UIView与CALayer的关系二、CALayer的简单使用1.圆角与裁剪2.contents3.边框属性 总结 前言 在实现网易云音乐demo开发的过程中&#xff0c;通过查阅网上资料&#xff0c;发现了我们可以对我们的视图进行裁剪来实现美观的体现&#xff0c;例如这样&#xff1a…

支付宝原生小程序组件与父级传递数据(微信小程序基本一样)

1. 声明组件 在对应的目录下,右击点击 新建小程序,之后会生成对应的文件 2. 子组件 Component({data: {colorList: [#165FF6, #3D16F6,

【C++杂货铺】拷贝构造函数

&#x1f4d6;定义 拷贝构造函数是构造函数的一个重载&#xff0c;它的本质还是构造函数&#xff0c;那就意味着&#xff0c;只有在创建对象的时候&#xff0c;编译器才会自动调用它&#xff0c;那他和普通的构造函数有什么区别呢&#xff1f; 拷贝构造函数&#xff0c;是创建…

Ubuntu系统开发环境搭建和常用软件

目录 安装PHP7.3 安装MySQL5.7 安装Nginx 配置Nginx支持PHP 安装Jetbrains全家桶 将程序加入到桌面和收藏夹 安装Navicat15 安装 redis和客户端工具 截图工具 终端修改 其它软件 当前我的系统是Ubuntu22.04&#xff1a; 安装PHP7.3 如果使用 apt install php 默认应…

一文讲透 Redis 事务 (事务模式 VS Lua 脚本)

准确的讲&#xff0c;Redis 事务包含两种模式 : 事务模式 和 Lua 脚本。 先说结论&#xff1a; Redis 的事务模式具备如下特点&#xff1a; 保证隔离性&#xff1b; 无法保证持久性&#xff1b; 具备了一定的原子性&#xff0c;但不支持回滚&#xff1b; 一致性的概念有分歧…

BI-SQL丨XML PATH

XML PATH 在SQL Server中&#xff0c;XML数据类型的应用范围是非常宽泛的&#xff0c;除了可以使用value和nodes处理一行拆多行的情况&#xff0c;我们还可以使用PATH处理多行合并成一行。 使用实例 例子&#xff1a;使用PATH处理多行合并成一行。 创建一张表&#xff0c;表…