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

Docker 常用命令基础详解(一)

一、Docker 初相识

在当今数字化时代,软件开发和部署的效率与灵活性成为了关键因素。Docker,作为一款开源的应用容器引擎,犹如一颗璀璨的明星,照亮了软件开发与部署的道路,为开发者们带来了前所未有的便利。它就像是一个神奇的 “集装箱”,可以将应用程序及其所有的依赖项打包在一起,形成一个独立的、可移植的运行环境。无论你是在开发、测试还是生产环境中,Docker 都能确保你的应用程序稳定运行,就像在一个 “密封舱” 里一样,不受外界环境的干扰。

(一)Docker 的独特优势

  1. 轻量级与高效性:与传统的虚拟机相比,Docker 容器的启动速度极快,几乎可以瞬间启动,而虚拟机的启动则需要数分钟的时间。这就好比你要出门,Docker 容器就像穿上一件轻便的外套,瞬间就能出发;而虚拟机则像穿上厚重的铠甲,准备时间漫长。此外,Docker 容器的资源占用极少,多个容器可以共享同一宿主机的内核,大大提高了资源的利用率。就像在一个大房子里,Docker 容器可以巧妙地利用每一寸空间,而虚拟机则像一个个巨大的房间,占据了大量的空间。
  1. 一致性与可移植性:Docker 容器确保了应用程序在不同环境中的一致性。无论你是在本地开发环境、测试环境还是生产环境中运行,应用程序的行为都是一致的。这就好比你制作了一个精美的蛋糕,无论你把它放在哪个厨房里展示,它的味道和外观都是一样的。而且,Docker 容器可以轻松地在不同的操作系统和基础设施之间移植,让你的应用程序可以在任何地方运行,就像一个万能的 “旅行家”。
  1. 快速部署与迭代:使用 Docker,你可以快速地部署和更新应用程序。通过简单的命令,你就可以创建、启动和停止容器,大大缩短了应用程序的部署时间。这就好比你在搭建一个乐高积木城堡,Docker 就像一个神奇的工具,让你可以快速地搭建和修改城堡,而不需要花费大量的时间和精力。

(二)Docker 的广泛应用场景

  1. 开发与测试环境:在开发和测试过程中,Docker 可以帮助开发者快速搭建和管理开发环境。每个开发人员都可以拥有自己独立的开发环境,避免了因环境差异而导致的问题。这就好比每个开发者都有自己的专属实验室,里面的设备和工具都是一样的,不会因为环境的不同而影响实验结果。
  1. 持续集成与持续部署(CI/CD):Docker 与 CI/CD 工具的完美结合,实现了自动化的构建、测试和部署过程。每次代码更新时,Docker 可以自动构建新的容器,并将其部署到生产环境中,大大提高了软件开发的效率和质量。这就好比一个高效的生产线,每个环节都紧密相连,自动化地完成产品的生产和交付。
  1. 微服务架构:在微服务架构中,每个微服务都可以独立地打包成一个 Docker 容器,实现了服务的独立部署、扩展和管理。这就好比一个大型的商场,每个店铺都是一个独立的个体,可以自由地调整经营策略和布局,而不会影响到其他店铺的运营。

(三)掌握 Docker 命令的重要性

要充分发挥 Docker 的强大功能,掌握其常用命令是至关重要的。这些命令就像是开启 Docker 宝藏的钥匙,让你能够轻松地管理容器、构建镜像、进行网络配置等操作。无论是创建和启动容器,还是管理镜像和仓库,每一个命令都有其独特的用途和魅力。接下来,让我们一起深入探索 Docker 的常用命令,开启这段精彩的技术之旅吧!

二、Docker 基础命令

2.1 查看版本信息

在使用 Docker 时,了解其版本信息是很有必要的,这有助于我们确定所使用的功能是否可用,以及排查一些与版本相关的问题。查看 Docker 版本信息的命令非常简单,只需在终端中输入:

 

docker version

执行该命令后,你会看到类似如下的输出:

 

Client:

Version: 20.10.12

API version: 1.41

Go version: go1.16.12

Git commit: e91ed57

Built: Mon Dec 13 11:45:04 2021

OS/Arch: linux/amd64

Context: default

Experimental: true

Server:

Engine:

Version: 20.10.12

API version: 1.41 (minimum version 1.12)

Go version: go1.16.12

Git commit: 459d0df

Built: Mon Dec 13 11:43:49 2021

OS/Arch: linux/amd64

Experimental: false

containerd:

Version: 1.4.12

GitCommit: 7b11cfaabd73bb80907dd23182b9347b4245eb5d

runc:

Version: 1.0.3

GitCommit: v1.0.3-0-gf46b6ba

docker-init:

Version: 0.19.0

GitCommit: de40ad0

从输出中可以看到,它分别展示了客户端(Client)和服务端(Server)的版本信息,包括版本号、API 版本、Go 版本、Git 提交信息、构建时间、操作系统和架构等。这就像是我们购买了一款软件,查看版本信息可以让我们了解这个软件的 “生产日期” 和 “配置参数”,以便更好地使用它。

2.2 获取帮助文档

当我们对某个 Docker 命令不太熟悉,或者想了解某个命令的具体用法和参数时,Docker 提供的帮助文档就像是一位贴心的 “小助手”,随时为我们答疑解惑。获取 Docker 整体帮助文档的命令如下:

 

docker --help

执行该命令后,你会看到一个非常详细的帮助页面,它列出了 Docker 的所有命令以及一些通用选项。例如,你可以看到管理命令(Management Commands),如 builder、config、container 等,以及普通命令(Commands),如 attach、build、commit 等。每个命令后面都有简短的描述,让你对其功能有一个初步的了解。这就好比你拿到了一本厚厚的使用说明书,虽然内容很多,但它能帮助你全面了解这个工具的各种功能。

如果你想获取某个具体命令的帮助文档,比如docker run命令,只需在命令后面加上--help,如下所示:

 

docker run --help

这样,你就会得到关于docker run命令的详细帮助信息,包括该命令的用法、各种选项及其含义。例如,--name选项用于为容器指定一个名称,-d选项用于在后台运行容器并返回容器 ID 等。通过查看这些详细的帮助信息,我们可以更准确地使用命令,避免因为参数错误而导致的问题。

2.3 了解系统状态

要全面了解 Docker 系统的运行状态,我们可以使用docker info命令。这个命令就像是一个 “系统探测器”,它会收集并展示 Docker 系统的各种详细信息,包括镜像数量、容器数量、存储驱动、网络配置等。在终端中输入以下命令:

 

docker info

执行后,你会看到类似如下的输出:

 

Containers: 3

Running: 1

Paused: 0

Stopped: 2

Images: 5

Server Version: 20.10.12

Storage Driver: overlay2

Backing Filesystem: extfs

Supports d_type: true

Native Overlay Diff: true

userxattr: false

Logging Driver: json-file

Cgroup Driver: cgroupfs

Cgroup Version: 1

Plugins:

Volume: local

Network: bridge host ipvlan macvlan null overlay

Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog

Swarm: inactive

Runtimes: runc

Default Runtime: runc

Init Binary: docker-init

containerd version: 7b11cfaabd73bb80907dd23182b9347b4245eb5d

runc version: v1.0.3-0-gf46b6ba

init version: de40ad0

Security Options:

seccomp

Profile: default

Kernel Version: 5.10.0-10-amd64

Operating System: Debian GNU/Linux 11 (bullseye)

OSType: linux

Architecture: x86_64

CPUs: 2

Total Memory: 3.855GiB

Name: your-hostname

ID: XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX

Docker Root Dir: /var/lib/docker

Debug Mode: false

Registry: https://index.docker.io/v1/

Labels:

Experimental: false

Insecure Registries:

127.0.0.0/8

Live Restore Enabled: false

Product License: Community Engine

从输出中,我们可以清晰地看到当前系统中容器的运行状态,如正在运行的容器数量、暂停的容器数量和停止的容器数量。同时,还能了解到镜像的数量、存储驱动的类型、网络插件的信息等。这些信息对于我们监控和管理 Docker 系统非常重要,就像医生通过各种检查数据来了解病人的身体状况一样,我们可以根据这些信息来优化和调整 Docker 系统的配置,确保其稳定高效地运行。

三、镜像操作命令

3.1 列出本地镜像

在使用 Docker 的过程中,我们常常需要查看本地已经下载或构建的镜像,这时就可以使用docker images命令。这个命令就像是一个 “镜像仓库管理员”,它会将本地镜像的信息清晰地展示出来。其基本语法如下:

 

docker images [OPTIONS] [REPOSITORY[:TAG]]

其中,OPTIONS是一些可选参数,REPOSITORY表示镜像仓库名称,TAG表示镜像标签。如果不指定REPOSITORY和TAG,则会列出所有本地镜像。常见的参数有:

  • -a:列出本地所有的镜像,包括中间映像层。默认情况下,会过滤掉中间映像层,只展示最终的镜像。就好比一个仓库里有很多货物,默认只展示摆放在外面的成品,而-a参数可以让我们看到仓库里所有的货物,包括半成品。
  • --digests:显示镜像的摘要信息,这对于确保镜像的完整性和一致性非常重要。就像我们购买商品时,查看商品的防伪标识,确保买到的是正品。
  • -f:根据指定条件过滤结果。例如,docker images -f "dangling=true"可以列出所有虚悬镜像(仓库名和标签都是<none>的镜像)。这就像是在仓库里筛选出特定类型的货物,方便我们管理和清理。
  • --format:指定返回值的模板文件,通过 Go 语言模板文件来定制展示的格式,让输出更符合我们的需求。
  • --no-trunc:显示完整的镜像信息,不会截断输出。有时候镜像的一些信息可能比较长,默认会截断显示,使用这个参数就可以看到完整的内容。
  • -q:只显示镜像 ID,简洁明了,适合在需要快速获取镜像 ID 的场景中使用。

执行docker images命令后,会看到一个类似如下的表格:

 

REPOSITORY TAG IMAGE ID CREATED SIZE

nginx latest 8609f97d428d 2 weeks ago 133MB

ubuntu 20.04 94e19c99c257 3 weeks ago 72.8MB

hello-world latest c54a2cc56cbb 5 months ago 1.84kB

表格中的各列含义如下:

  • REPOSITORY:镜像所属的仓库名称,就像货物所属的品牌或类别。
  • TAG:镜像的标签,用于区分同一仓库中的不同版本,通常latest表示最新版本。这就好比商品的不同批次或型号。
  • IMAGE ID:镜像的唯一标识,类似于商品的条形码,通过它可以准确地识别和操作镜像。
  • CREATED:镜像的创建时间,让我们了解镜像的 “年龄”。
  • SIZE:镜像的大小,反映了镜像所占用的存储空间,就像商品的体积大小。

3.2 搜索镜像

当我们需要在 Docker Hub 中查找特定的镜像时,docker search命令就派上用场了。它就像是一个 “镜像搜索引擎”,帮助我们在海量的镜像中找到符合需求的那一个。其基本语法为:

 

docker search [OPTIONS] TERM

其中,OPTIONS是可选参数,TERM是搜索的关键词,比如镜像名称或相关描述。常见的参数有:

  • --automated:只列出自动构建的镜像,这些镜像通常是由一些自动化工具或流程创建的,质量和稳定性可能更有保障。
  • --filter, -f:根据指定条件过滤结果。例如,docker search -f "stars=30" nginx可以筛选出点赞数(STARS)大于等于 30 的 nginx 镜像。这就像是在搜索引擎中设置筛选条件,快速找到符合要求的信息。
  • --limit:限制搜索结果的最大条数,默认是 25 条。如果我们只需要查看前几个最相关的镜像,可以使用这个参数来控制输出数量。
  • --no-trunc:不截断输出,显示完整的镜像描述和其他信息,让我们能更全面地了解镜像的详细情况。
  • --stars, -s:只展示点赞数(STARS)不低于该数值的结果,通过点赞数可以大致了解镜像的受欢迎程度和质量。

例如,我们要搜索 nginx 镜像,可以执行以下命令:

 

docker search nginx

执行后,会看到一个类似如下的表格:

 

NAME DESCRIPTION STARS OFFICIAL AUTOMATED

nginx Official build of Nginx. 16640 [OK]

jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1715 [OK]

richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 815 [OK]

表格中的各列含义如下:

  • NAME:镜像的名称,包含仓库名和镜像名,方便我们识别和拉取。
  • DESCRIPTION:镜像的描述信息,简单介绍了镜像的用途和特点,帮助我们判断是否符合需求。
  • STARS:镜像的点赞数,反映了该镜像在社区中的受欢迎程度,点赞数越高,通常表示该镜像质量和实用性较好。
  • OFFICIAL:表示是否为官方镜像,官方镜像由软件的官方项目组创建和维护,质量和安全性更有保障。
  • AUTOMATED:表示是否是自动构建的镜像,自动构建的镜像一般是通过特定的脚本或工具自动生成的,构建过程更加标准化和高效。

3.3 拉取镜像

从远程仓库获取镜像到本地,我们使用docker pull命令,它就像是一个 “镜像搬运工”,将我们需要的镜像从远程仓库搬运到本地。其基本语法为:

 

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

其中,OPTIONS是可选参数,NAME是镜像的名称,TAG是镜像的标签,用于指定版本,DIGEST是镜像的摘要,用于唯一标识一个镜像版本。如果不指定TAG,默认会拉取latest版本。常见的参数有:

  • --all-tags, -a:下载所有标签的镜像,这在我们需要获取某个镜像的所有版本时非常有用,不过可能会占用较多的存储空间。
  • --disable-content-trust:忽略镜像的校验,默认情况下,Docker 会对下载的镜像进行校验,确保镜像的完整性和安全性。但在某些特殊情况下,我们可能需要忽略校验,比如使用一些未经过官方签名的镜像时。

例如,要拉取最新版本的 nginx 镜像,可以执行:

 

docker pull nginx

如果要拉取特定版本,比如 1.19 版本的 nginx 镜像,则执行:

 

docker pull nginx:1.19

当我们执行拉取命令时,Docker 会首先检查本地是否已经存在该镜像,如果不存在,就会从远程仓库下载。下载过程中,会显示下载的进度和相关信息,让我们清楚地了解下载的状态。

3.4 推送镜像

将本地镜像推送到远程仓库,我们需要使用docker push命令,但在推送之前,必须先登录到远程仓库,就像我们要把东西寄到某个地方,首先要获得这个地方的 “通行证”。登录远程仓库的命令是docker login,执行后会提示输入用户名和密码。登录成功后,就可以使用docker push命令推送镜像了,其基本语法为:

 

docker push [OPTIONS] NAME[:TAG]

其中,OPTIONS是可选参数,NAME是镜像的名称,TAG是镜像的标签。如果不指定TAG,默认会推送latest版本。常见的参数有:

  • --disable-content-trust:忽略镜像的校验,在推送镜像时,也可以选择忽略校验,不过这可能会带来一定的安全风险,所以在正式环境中要谨慎使用。

例如,我们要将本地的一个名为myapp:v1.0的镜像推送到 Docker Hub 上,首先登录:

 

docker login

输入用户名和密码登录成功后,执行推送命令:

 

docker push myapp:v1.0

推送过程中,会显示推送的进度和相关信息。如果推送成功,我们就可以在远程仓库中看到这个镜像了,这样其他人也可以从远程仓库拉取这个镜像来使用。

3.5 删除镜像

当我们不再需要某个本地镜像时,可以使用docker rmi命令将其删除,它就像是一个 “镜像清理工”,帮助我们释放磁盘空间,保持本地镜像仓库的整洁。其基本语法为:

 

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

其中,OPTIONS是可选参数,IMAGE是要删除的镜像,可以是镜像 ID、镜像名或镜像名:标签的形式。常见的参数有:

  • -f, --force:强制删除镜像,即使该镜像被一个或多个容器使用。有时候,我们想要删除的镜像可能正在被容器使用,如果直接删除会报错,这时使用-f参数就可以强制删除。但要注意,强制删除可能会导致正在运行的容器出现问题,所以在使用时要谨慎。
  • --no-prune:不移除该镜像的过程镜像,默认情况下,删除镜像时会同时移除相关的过程镜像,使用这个参数可以保留过程镜像。

例如,要删除名为myapp:v1.0的镜像,可以执行:

 

docker rmi myapp:v1.0

如果要删除所有镜像,可以使用以下命令:

 

docker rmi -f $(docker images -qa)

这里的$(docker images -qa)会列出所有本地镜像的 ID,然后-f参数强制删除这些镜像。在执行删除所有镜像的命令时要特别小心,确保确实不再需要这些镜像,以免误删重要的镜像。

相关文章:

Docker 常用命令基础详解(一)

一、Docker 初相识 在当今数字化时代&#xff0c;软件开发和部署的效率与灵活性成为了关键因素。Docker&#xff0c;作为一款开源的应用容器引擎&#xff0c;犹如一颗璀璨的明星&#xff0c;照亮了软件开发与部署的道路&#xff0c;为开发者们带来了前所未有的便利。它就像是一…...

网络工程师 (47)QOS

一、概念与原理 QOS即服务质量&#xff08;Quality of Service&#xff09;是一种网络技术&#xff0c;用于管理和保证网络中不同类型的质量和性能。它通过设置优先级和带宽限制等策略&#xff0c;确保关键应用&#xff08;如视频会议、语音通信&#xff09;的数据包能够在网络…...

glob 用法技巧

目录 处理大量文件节省内存 匹配多个文件扩展名 遍历多种格式文件 遍历某一个文件&#xff1a; 查找当前目录和子目录 6. 排除特定文件 7. 大小写不敏感匹配 8. 获取绝对路径 9. 处理特殊字符 处理大量文件节省内存 技巧&#xff1a;用 iglob 替代 glob&#xff0c;逐…...

Vue3 前端路由配置 + .NET8 后端静态文件服务优化策略

目录 一、Vue 前端配置&#xff08;核心&#xff09; 1. 配置 Vue Router 的 base 路径 2. 配置 Vue 的 publicPath 二、.NET 后端配置&#xff08;关键&#xff09; 1. 启用默认文档中间件 2. 配置静态文件服务的默认文档 三、验证访问路径 四、原理解释 五、常见问题…...

风铃摇晃的弧度与不安等长

晴&#xff0c;2025年2月19日 的确是&#xff0c;有依靠又有谁会去自己打伞。是啊&#xff0c;有时候生活推着我们走的样子确实挺无力的。不过谁都愿意携手走的&#xff0c;希望有一天再也不用“抛头露面”了吧。 又下载回了 X &#xff0c;马上 Gork 3 可以使用&#xff0c…...

Linux部署DeepSeek r1 模型训练

之前写过一篇windows下部署deepseekR1的文章&#xff0c;有小伙伴反馈提供一篇linux下部署DeepSeek r1 模型训练教程&#xff0c;在 Linux 环境下&#xff0c;我找了足够的相关资料&#xff0c;花费了一些时间&#xff0c;我成功部署了 DeepSeek R1 模型训练任务&#xff0c;结…...

JetBrains 2024开发者生态报告 -你尝试过用VR头戴设备编程吗

JetBrains 2024开发者生态报告&#xff1a;核心洞察 方法论 覆盖 171 个国家/地区 的 23,262 名开发者 。数据按区域开发者数量和就业状态加权。 主要趋势 AI 整合 80% 的公司允许使用第三方 AI 工具&#xff08;如 ChatGPT、Copilot&#xff09;。18% 的开发者将 AI 集成到产…...

Spring Boot “约定大于配置”

什么是“约定大于配置”&#xff1f; “约定大于配置”是一种简化开发的设计理念。简单来说&#xff0c;就是框架默认提供了常见的配置和行为&#xff0c;开发者只需要按照约定来编写代码&#xff0c;避免了繁琐的配置&#xff0c;只在需要时进行定制和调整。这种理念在Spring…...

【大语言模型_3】ollama本地加载deepseek模型后回答混乱问题解决

背景&#xff1a; 本地下载了DeepSeek-R1-Distill-Qwen-7B模型后&#xff0c;通过ollama create DeepSeek-R1-Distill-Qwen-7B -f ds7b.mf加载模型启动后回答混乱&#xff0c;无法使用。 解决方法 重新下载模型&#xff0c;选择了DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf 重…...

汇能感知的光谱相机/模块产品有哪些?

CM020A 分辨率&#xff1a;1600H1200V 光谱范围&#xff1a;350~950nm 光谱分辨率&#xff1a;1nm 接口&#xff1a;USB2.0 帧率&#xff1a;16001200 (6帧) 输出格式&#xff1a;Raw 8bit FOV&#xff1a;D73.5H58.8V44.1 相机尺寸&#xff1a;505055mm VM02S10 分辨率…...

Spring中Bean的四种实例化方法

Bean的四种实例化方法 Bean是Spring核心的概念&#xff0c;另外一个核心的概念是AOP。官网上&#xff0c;Bean的解释是&#xff1a; In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans…...

Office word打开加载比较慢处理方法

1.添加safe参数 ,找到word启动项,右击word,选择属性 , 添加/safe , 应用并确定 2.取消加载项,点击文件,点击选项 ,点击加载项,点击转到,取消所有勾选,确定。...

一台服务器将docker image打包去另一天服务器安装这个镜像

一台服务器将docker image打到去另一天服务器安装这个镜像 1. 打包2.另一台服务器执行 1. 打包 docker save -o nebula-graph-studio.tar harbor1.vm.example.lan/dockerio/vesoft/nebula-graph-studioxxx.tar 是打包好的文件 后面的是 docker image 2.另一台服务器执行 docke…...

在局域网中连接Grafana数据源

目录 登录Grafana 添加数据源 配置数据源 保存并测试 使用数据源 注意事项 登录Grafana 打开浏览器&#xff0c;访问Grafana的地址&#xff0c;默认是http://localhost:3000。 使用默认用户名和密码登录&#xff08;通常是admin/admin&#xff09;&#xff0c;登录后建议…...

深入理解指针1

深入理解指针1 一.内存和地址以及指针间的关系 举一个生活中的例子&#xff0c;假如你去找你的朋友玩&#xff0c;你的朋友告诉了你酒店的名字&#xff0c;但是没有告诉告诉你他具体住哪一件房间&#xff0c;于是你为了找到你的朋友&#xff0c;只好一间房间一间房间的去找&am…...

使用 pjsua2 开发呼叫机器人,批量拨打号码并播放固定音频

如何使用 pjsua2 开发呼叫机器人,批量拨打号码并播放固定音频 声明 该播客仅提供实现思路,并非实际的方案记录,不要盲目照搬。 pjsua2库的安装会有较多问题,请参考本人之前的播客进行安装 pjsua2。 pjsua2 库具体的 api 说明请参考开源库内的 范例代码。 引言 在今天的…...

【部署优化篇四】《DeepSeek移动端优化:CoreML/TFLite实战对比》

手机里的AI助手能秒速回答你的问题,游戏人物能实时追踪你的表情变化,这些酷炫功能的背后都离不开移动端机器学习框架的支撑。今天我们就来撕开两个当红炸子鸡框架CoreML和TFLite的神秘面纱,看看它们在模型优化这件事上到底藏着哪些独门绝技。 一、移动端优化的生存法则 在…...

【分布式理论14】分布式数据库存储:分表分库、主从复制与数据扩容策略

文章目录 一、分表分库1. 数据分表的必要性与方式2. 数据分库原则与优势 二、主从复制1. 读写分离架构设计2. 数据复制方式3. MySQL实现主从复制4. MySQL主从复制实践与高可用方案 三、数据扩容 随着业务的不断发展和数据量的增长&#xff0c;传统的单机关系型数据库已经逐渐不…...

【嵌入式Linux应用开发基础】特殊进程

目录 一、守护进程&#xff08;Daemon Process&#xff09; 1.1. 概念 1.2. 特点 1.3. 守护进程的命名 1.4. 创建守护进程的步骤 1.5. 守护进程的实例 1.6. 守护进程的管理 1.7. 影响与处理 二、僵尸进程&#xff08;Zombie Process&#xff09; 2.1. 僵尸进程的定义…...

HDFS应用-后端存储cephfs-java-API

HDFS(Hadoop Distribute FileSystem)是一个适合运行在通用硬件之上,具备高度容错特性,支持高吞吐量数据访问的分布式文件系统,非常适合大规模数据集应用。 HDFS适用于如下场景: • 处理海量数据(TB或PB级别以上) • 需要很高的吞吐量 • 需要高可靠性 • 需要很好的可扩…...

复现log4j2的jndi注入成功反弹shell

在Apache Solr 中复现log4j2的jndi注入漏洞&#xff0c;获得docker容器的root权限&#xff0c;实验五步走&#xff1a; 启动容器访问web页面漏洞探测反弹shell载荷wireshark抓取log4j反弹shell流量 ailx10 1956 次咨询 4.9 网络安全优秀回答者 互联网行业 安全攻防员 去咨…...

Cursor实战:Web版背单词应用开发演示

Cursor实战&#xff1a;Web版背单词应用开发演示 需求分析自行编写需求文档借助Cursor生成需求文档 前端UI设计后端开发项目结构环境参数数据库设计安装Python依赖运行应用 前端代码修改测试前端界面 测试数据生成功能测试Bug修复 总结 在上一篇《Cursor AI编程助手不完全指南》…...

win10系统上的虚拟机安装麒麟V10系统提示找不到操作系统

目录预览 一、问题描述二、原因分析三、解决方案四、参考链接 一、问题描述 win10系统上的虚拟机安装麒麟V10系统提示找不到操作系统&#xff0c;报错&#xff1a;Operating System not found 二、原因分析 国产系统&#xff0c;需要注意的点&#xff1a; 需要看你的系统类…...

python subprocess库

subprocess subprocess 是 Python 标准库中的一个模块&#xff0c;用于创建和管理子进程。它允许你在 Python 程序中执行外部命令、调用其他程序&#xff0c;并与这些程序进行交互。subprocess 模块提供了丰富的功能&#xff0c;可以替代一些旧的模块和函数&#xff0c;如 os.…...

敏捷项目管理:适应快速变化的项目环境

一、敏捷项目管理的核心逻辑 敏捷项目管理是一种以迭代开发、快速响应变化、持续交付价值为核心的方法论&#xff0c;尤其适合需求频繁变更或市场环境不确定的项目。它的核心逻辑是**“小步快跑”**——将大目标拆解为多个短期可交付的成果&#xff0c;通过持续反馈和调整&…...

矿用机车移动逆变电源设计(论文+源码)

1总体方案设计 本课题为矿用机车移动逆变电源的硬件电路设计&#xff0c;其整个架构如图2.1所示包括了:380V三相交流电&#xff0c;逆变电路&#xff0c;高频变压器&#xff0c;24V直流输出&#xff0c;控制电路&#xff0c;驱动电路&#xff0c;保护电路等等。 在工作原理上&…...

前七章综合练习

一&#xff0c;拓扑图 二&#xff0c;实验要求 不限 三&#xff0c;实验步骤 第一步&#xff0c;搭建拓扑图 如上 注意&#xff1a; 第二步&#xff0c;配置IP trust&#xff1a; client1 client2 fw untrusrt-1&#xff1a; fw r3 电信DNS 百度web-1 untrust-2&#xf…...

二级指针略解【C语言】

以int** a为例 1.二级指针的声明 a 是一个指向 int*&#xff08;指向整型的指针&#xff09;的指针&#xff0c;即二级指针。 通俗的讲&#xff0c;a是一个指向指针的指针&#xff0c;对a解引用会是一个指针。 它可以用于操作动态分配的二维数组、指针数组或需要间接修改指针…...

环境变量2

目录 环境变量PATH 如何改变PATH 我们今天继续来学习环境变量2&#xff01;&#xff01;&#xff01; 环境变量PATH PATH的作用是知道命令的搜索路径&#xff0c;我们都知道Linux上的命令行指令&#xff0c;ll&#xff0c;pwd什么的为什么我们写出来系统就知道是什么并且运…...

GoFound 与 MySQL 集成优化方案

GoFound 与 MySQL 集成优化方案 1. 明确需求 文章信息存储在 MySQL 数据库中。使用 GoFound 实现全文搜索功能。搜索时&#xff0c;先从 GoFound 中获取匹配的文章 ID&#xff0c;然后从 MySQL 中查询完整的文章信息。 2. 优化思路 数据同步&#xff1a;将 MySQL 中的文章数…...