一、

最近由于某些场景下需要使用nmap,而nmap的rpm安装包在源目标机器上使用有软件冲突,因此,计划使用docker部署nmap

具体计划为

1、使用centos的基础镜像,在有网环境下,通过配置阿里云的yum仓库,在centos基础镜像内编译安装好nmap

2、制作多版centos镜像,尽量优化制作出的镜像大小,合理瘦身,以方便制作出的镜像上传和下载

3、在多版镜像中挑选最小的镜像,测试镜像功能是否符合预期

二、

制作镜像前的准备工作

主要是nmap的源码包和阿里云的yum仓库文件

阿里云的yum仓库文件 两个文件都修改完成,可以直接使用了,和Dockerfile放置在同一个目录下,名字分别为CentOS-Base.repo和epel.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-7 - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/os/$basearch/http://mirrors.aliyuncs.com/centos/7/os/$basearch/http://mirrors.cloud.aliyuncs.com/centos/7/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7#released updates 
[updates]
name=CentOS-7 - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/updates/$basearch/http://mirrors.aliyuncs.com/centos/7/updates/$basearch/http://mirrors.cloud.aliyuncs.com/centos/7/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7#additional packages that may be useful
[extras]
name=CentOS-7 - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/extras/$basearch/http://mirrors.aliyuncs.com/centos/7/extras/$basearch/http://mirrors.cloud.aliyuncs.com/centos/7/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-7 - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/centosplus/$basearch/http://mirrors.aliyuncs.com/centos/7/centosplus/$basearch/http://mirrors.cloud.aliyuncs.com/centos/7/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7#contrib - packages by Centos Users
[contrib]
name=CentOS-7 - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/contrib/$basearch/http://mirrors.aliyuncs.com/centos/7/contrib/$basearch/http://mirrors.cloud.aliyuncs.com/centos/7/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://mirrors.aliyun.com/epel/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
baseurl=http://mirrors.aliyun.com/epel/7/$basearch/debug
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=0[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
baseurl=http://mirrors.aliyun.com/epel/7/SRPMS
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=0
[root@k8s-master dockerbuild]# cat epel.repo 
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://mirrors.aliyun.com/epel/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
baseurl=http://mirrors.aliyun.com/epel/7/$basearch/debug
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=0[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
baseurl=http://mirrors.aliyun.com/epel/7/SRPMS
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=0

nmap-7.91源码下载地址:https://nmap.org/dist/nmap-7.91.tar.bz2 ,该软件下载后和Dockerfile放置在同一个目录下

三、

第一版dockers build

FROM  centos_vim:latest 
COPY  CentOS-Base.repo /etc/yum.repos.d/
COPY  epel.repo /etc/yum.repos.d/
ADD  nmap-7.91.tar.bz2 /root/
RUN  cd /root/nmap-7.91/ &&yum install gcc gcc-c++ make -y && ./configure --prefix=/usr/local/nmap&&make &&make install &&make clean&& cd /root/&& rm -rf /root/nmap-7.91&&yum clean all
ENTRYPOINT [ "/usr/bin/tail", "-f", "/etc/yum.repos.d/epel.repo;" ]

build命令基本不变的:

docker build -t centos-vim-nmap:v2 .

此时,我们观察镜像大小,可以看到镜像还是比较大的,大概400多M,直接用docker images也是可以印证到的:

[root@k8s-master dockerbuild]# docker  history centos-vim-nmap:v2
IMAGE          CREATED       CREATED BY                                      SIZE      COMMENT
cef198ffbf5d   8 hours ago   /bin/sh -c #(nop)  ENTRYPOINT ["/usr/bin/tai…   0B        
eba73e85c735   8 hours ago   /bin/sh -c cd /root/nmap-7.91/ &&yum install…   151MB     
4af8cec1f126   9 hours ago   /bin/sh -c #(nop) ADD file:6f98802f7e9d7e895…   52.6MB    
d63ddcc9393a   9 hours ago   /bin/sh -c #(nop) COPY file:d41ffd9b2808e586…   664B      
c075338a9174   9 hours ago   /bin/sh -c #(nop) COPY file:d7d3b8798da7098c…   2.32kB    
962cf7473955   3 years ago   /bin/sh -c #(nop)  CMD ["/bin/bash" "-D"]       0B        
<missing>      3 years ago   /bin/sh -c #(nop)  EXPOSE 22                    0B        
<missing>      3 years ago   /bin/sh -c yum -y install vim net-tools && y…   73.3MB    
<missing>      3 years ago   /bin/sh -c #(nop)  MAINTAINER by jesse (jess…   0B        
<missing>      8 years ago   /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B        
<missing>      8 years ago   /bin/sh -c #(nop)  LABEL license=GPLv2          0B        
<missing>      8 years ago   /bin/sh -c #(nop)  LABEL vendor=CentOS          0B        
<missing>      8 years ago   /bin/sh -c #(nop)  LABEL name=CentOS Base Im…   0B        
<missing>      8 years ago   /bin/sh -c #(nop) ADD file:b3bdbca0669a03490…   195MB     
<missing>      8 years ago   /bin/sh -c #(nop)  MAINTAINER The CentOS Pro…   0B   
[root@k8s-master dockerbuild]# docker images |grep centos
centos-vim-nmap                                        v1               ba4aaefb21f0   8 hours ago     299MB
centos-vim-nmap                                        v2               cef198ffbf5d   8 hours ago     472MB
centos_vim                                             v1               69b8e7c0ec9f   28 hours ago    824MB
centos_vim                                             v                d0f1a760bf9f   28 hours ago    824MB
centos_vim                                             latest           962cf7473955   3 years ago     268MB

第二版docker build

这一版采用多阶段构建,其实RUN命令是可以简化的,不过不影响最终的容器大小,主要是COPY --from=build /usr/local/nmap /usr/local/nmap 把编译产出物直接拷贝到下一个阶段了

FROM  centos_vim:latest AS build
COPY  CentOS-Base.repo /etc/yum.repos.d/
COPY  epel.repo /etc/yum.repos.d/
ADD  nmap-7.91.tar.bz2 /root/
RUN  cd /root/nmap-7.91/ &&yum install gcc gcc-c++ make -y && ./configure --prefix=/usr/local/nmap&&make &&make install &&make clean&& cd /root/&& rm -rf /root/nmap-7.91&&yum clean all
FROM centos_vim:latest
COPY --from=build /usr/local/nmap /usr/local/nmap
ENTRYPOINT [ "/usr/bin/tail", "-f", "/etc/yum.repos.d/epel.repo;" ]

看build history可以看到明显变小了,只有300M了

[root@k8s-master dockerbuild]# docker  history centos-vim-nmap:v1
IMAGE          CREATED       CREATED BY                                      SIZE      COMMENT
ba4aaefb21f0   8 hours ago   /bin/sh -c #(nop)  ENTRYPOINT ["/usr/bin/tai…   0B        
28424c28af89   8 hours ago   /bin/sh -c #(nop) COPY dir:c798ee1e3e91fcd7d…   31MB      
962cf7473955   3 years ago   /bin/sh -c #(nop)  CMD ["/bin/bash" "-D"]       0B        
<missing>      3 years ago   /bin/sh -c #(nop)  EXPOSE 22                    0B        
<missing>      3 years ago   /bin/sh -c yum -y install vim net-tools && y…   73.3MB    
<missing>      3 years ago   /bin/sh -c #(nop)  MAINTAINER by jesse (jess…   0B        
<missing>      8 years ago   /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B        
<missing>      8 years ago   /bin/sh -c #(nop)  LABEL license=GPLv2          0B        
<missing>      8 years ago   /bin/sh -c #(nop)  LABEL vendor=CentOS          0B        
<missing>      8 years ago   /bin/sh -c #(nop)  LABEL name=CentOS Base Im…   0B        
<missing>      8 years ago   /bin/sh -c #(nop) ADD file:b3bdbca0669a03490…   195MB     
<missing>      8 years ago   /bin/sh -c #(nop)  MAINTAINER The CentOS Pro…   0B  

docker build的错误示范

也就是把RUN命令拆开,不做任何清理,那么这个镜像会多大呢?

FROM  centos_vim:latest
COPY  CentOS-Base.repo /etc/yum.repos.d/
COPY  epel.repo /etc/yum.repos.d/
ADD  nmap-7.91.tar.bz2 /root/
RUN  cd /root/nmap-7.91/
WORKDIR /root/nmap-7.91/
RUN yum install gcc gcc-c++ make -y && ./configure --prefix=/usr/local/nmap&&make &&make install
ENTRYPOINT [ "/usr/bin/tail", "-f", "/etc/yum.repos.d/epel.repo;" ]

build命令:

docker build -t centos-vim-nmap:v3 .

build history 查看镜像大小,预估为800多M

[root@k8s-master dockerbuild]# docker  history centos-vim-nmap:v3
IMAGE          CREATED          CREATED BY                                      SIZE      COMMENT
7bd9da6a6834   24 seconds ago   /bin/sh -c #(nop)  ENTRYPOINT ["/usr/bin/tai…   0B        
5638397f6bee   24 seconds ago   /bin/sh -c yum install gcc gcc-c++ make -y &…   491MB     
cc92fafc4d7f   2 minutes ago    /bin/sh -c #(nop) WORKDIR /root/nmap-7.91       0B        
ae1d0b5fc823   4 minutes ago    /bin/sh -c cd /root/nmap-7.91/                  0B        
4af8cec1f126   9 hours ago      /bin/sh -c #(nop) ADD file:6f98802f7e9d7e895…   52.6MB    
d63ddcc9393a   9 hours ago      /bin/sh -c #(nop) COPY file:d41ffd9b2808e586…   664B      
c075338a9174   9 hours ago      /bin/sh -c #(nop) COPY file:d7d3b8798da7098c…   2.32kB    
962cf7473955   3 years ago      /bin/sh -c #(nop)  CMD ["/bin/bash" "-D"]       0B        
<missing>      3 years ago      /bin/sh -c #(nop)  EXPOSE 22                    0B        
<missing>      3 years ago      /bin/sh -c yum -y install vim net-tools && y…   73.3MB    
<missing>      3 years ago      /bin/sh -c #(nop)  MAINTAINER by jesse (jess…   0B        
<missing>      8 years ago      /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B        
<missing>      8 years ago      /bin/sh -c #(nop)  LABEL license=GPLv2          0B        
<missing>      8 years ago      /bin/sh -c #(nop)  LABEL vendor=CentOS          0B        
<missing>      8 years ago      /bin/sh -c #(nop)  LABEL name=CentOS Base Im…   0B        
<missing>      8 years ago      /bin/sh -c #(nop) ADD file:b3bdbca0669a03490…   195MB     
<missing>      8 years ago      /bin/sh -c #(nop)  MAINTAINER The CentOS Pro…   0B  
[root@k8s-master dockerbuild]# docker images |grep centos
centos-vim-nmap                                        v3               7bd9da6a6834   2 minutes ago   811MB
centos-vim-nmap                                        v1               ba4aaefb21f0   8 hours ago     299MB
centos-vim-nmap                                        v2               cef198ffbf5d   8 hours ago     472MB
centos_vim                                             v1               69b8e7c0ec9f   28 hours ago    824MB
centos_vim                                             v                d0f1a760bf9f   28 hours ago    824MB
centos_vim                                             latest           962cf7473955   3 years ago     268MB

可以发现,如果不做任何清理,RUN命令拆分开后,build的镜像是和直接commit镜像基本一致的

三、

nmap的功能测试

1、

docker  run 镜像

docker run -itd --name=centos centos-vim-nmap:v1 /bin/bash

2、

直接运行nmap

[root@k8s-master dockerbuild]# docker exec -it centos /usr/local/nmap/bin/nmap 182.61.244.181
Starting Nmap 7.91 ( https://nmap.org ) at 2025-07-19 13:24 UTC
Nmap scan report for 182.61.244.181
Host is up (0.0096s latency).
Not shown: 997 filtered ports
PORT      STATE SERVICE
80/tcp    open  http
443/tcp   open  https
32768/tcp open  filenet-tmsNmap done: 1 IP address (1 host up) scanned in 4.87 seconds
[root@k8s-master ~]# docker exec -it centos /usr/local/nmap/bin/nmap -iL /root/ip.txt -sS 
Starting Nmap 7.91 ( https://nmap.org ) at 2025-07-19 13:27 UTC
Nmap scan report for 192.168.123.15
Host is up (0.0000040s latency).
Not shown: 998 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
5432/tcp open  postgresqlNmap done: 1 IP address (1 host up) scanned in 6.71 seconds

可以看到,nmap是从容器内向外扫描,数据链路会多一层,这些需要特别注意噢

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于单片机公交车报站系统/报站器

传送门 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目速选一览表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目功能速览​​​​​​​ 概述 公交车自动报站系统利用单片机作为核心控制器&#xff0c;结合GPS/北斗定位模块、语音存…

Oracle 体系结构学习

1 认识Oracle后台进程Oracle数据库后台进程是Oracle数据库管理系统&#xff08;DBMS&#xff09;的核心组件&#xff0c;它们在后台运行&#xff0c;负责数据库的各种管理和维护任务。主要包括以下几种&#xff1a;SMON (System Monitor)SMON负责数据库的恢复操作&#xff0c;如…

构建一种安全的老式测试仪,用于具有限流灯泡,模拟仪表和可变输出的交流设备

这个复古电路和电源测试仪的想法来自我需要一个简单&#xff0c;安全&#xff0c;时尚的工具来测试和控制工作台上的线路供电设备。商业解决方案要么太笨重&#xff0c;太昂贵&#xff0c;要么缺乏我喜欢的触觉和模拟魅力。所以我决定自己造一个。这个测试仪的核心是一个老式的…

Redis5:Redis的Java客户端——Jedis与SpringDataRedis详解

目录 1、Jedis客户端 1.1使用过程 2、SpringDataRedis 2.1 SpingDataRedis介绍 2.2SpringDataRedis快速入门 2.3RedisTemplate的RedisSerializer 2.3.1RedisTemplate中JDK序列化局限性 2.3.2方式一&#xff1a;改变RedisTemplate的序列化方式 2.3.3RedisTemplate存储一…

零基础 “入坑” Java--- 十三、再谈类和接口

文章目录一、Object类1.获取对象信息2.对象比较&#xff1a;equals方法二、再谈接口1.比较相关接口2.Cloneable接口和深拷贝三、内部类1.匿名内部类2.实例内部类3.静态内部类4.局部内部类在之前的学习中&#xff0c;我们已经了解了有关类以及接口的知识&#xff0c;在本章节中&…

Spring Boot 一个注解搞定「加密 + 解密 + 签名 + 验签」

Spring Boot 一个注解搞定「加密 解密 签名 验签」本文基于 Spring Boot 3.x&#xff0c;通过一个自定义注解 AOP&#xff0c;一行注解即可给任何 Controller 方法加上 请求解密 → 验签 → 响应加密 → 加签 的完整链路&#xff0c;并可直接拷贝到生产环境使用。一、最终效…

《计算机网络》实验报告二 IP协议分析

目 录 1、实验目的 2、实验环境 3、实验内容 3.1 tcpdump 基本用法 3.2 wireshark基本用法 3.3 利用tcpdump抓包&#xff0c;wireshark分析包 4、实验结果与分析 4.1 tcpdump命令的基本用法 4.2 wireshark的基本用法 4.3 利用tcpdump抓包&#xff0c;wireshark分析包…

k8s学习记录(三):Pod基础-Node选择

一、前言 在上一篇文章中我们学习了Pod的一些基本的知识&#xff0c;今天我们将继续学习Pod。 二、K8S如何选择节点来运行Pod 我们知道在一个K8S集群中&#xff0c;会有多个工作节点&#xff08;Worker Node&#xff09;&#xff0c;那么k8s会选择那个node呢&#xff1f;接下…

3天功能开发→3小时:通义灵码2.0+DEEPSEEK实测报告,单元测试生成准确率92%的秘密

活动链接&#xff1a;https://developer.aliyun.com/topic/lingma-aideveloper?spma2c6h.29979852.J_9593490300.2.49b8110eeymlF8 前言 随着人工智能技术的迅猛发展&#xff0c;AI 赋能编程成为了必然趋势。通义灵码应运而生&#xff0c;它是阿里巴巴集团在人工智能与编程领…

【小沐学GIS】基于Rust绘制三维数字地球Earth(Rust、OpenGL、GIS)

&#x1f37a;三维数字地球GIS系列相关文章如下&#x1f37a;&#xff1a;1【小沐学GIS】基于C绘制三维数字地球Earth&#xff08;OpenGL、glfw、glut&#xff09;第一期2【小沐学GIS】基于C绘制三维数字地球Earth&#xff08;OpenGL、glfw、glut&#xff09;第二期3【小沐学GI…

ARM 学习笔记(三)

参考文献&#xff1a;《ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition》《ARM Cortex-A (ARMv7-A) Series Programmer’s Guide》1、内存类型 ARMv7-A 处理器中&#xff0c;将 Memory 定义为几种类型&#xff08;Memory Type&#xff09;&#xff1a; Strong…

Flask 框架(一):核心特性与基础配置

目录 一、为什么选择 Flask&#xff1f; 二、Flask 核心概念与初始化 2.1 程序实例初始化 2.2 运行配置&#xff1a;app.run () 参数详解 2.3 应用配置&#xff1a;三种参数设置方式 1. 字典直接配置&#xff08;简单临时场景&#xff09; 2. 配置文件导入&#xff08;生…

社交圈子系统开源社交源码 / 小程序+H5+APP 多端互通的底层技术分析

伴随社交产品向“圈子化”、“内容驱动”发展方向演进&#xff0c;打造一套支持小程序、H5、APP 互通的社交圈子系统&#xff0c;已经成为构建垂直社区的基础架构能力要求。本文围绕一套典型的多端社交兴趣平台&#xff08;即友猫社区平台&#xff09;的设计实践&#xff0c;对…

gitlab-runner配置问题记录

引言 笔者曾通过2种方式部署过 gitlab-runner&#xff0c;在 gitlab 中使用这个 runner 拉起 ci job 的过程中或多或少遇到些问题&#xff0c;主要都是 job 中无法访问宿主机的docker 等组件。本篇文档主要记录 gitlab-runner 安装及相关配置。 二进制部署 gitlab-runner 部署 …

每日面试题10:令牌桶

令牌桶算法&#xff1a;优雅的流量控制艺术在现代分布式系统中&#xff0c;流量控制如同交通信号灯般重要——它既不能让请求"堵死"系统&#xff0c;也不能放任流量"横冲直撞"。令牌桶算法&#xff08;Token Bucket Algorithm&#xff09;正是这样一种精妙…

【java】消息推送

文章目录Java网页消息推送解决方案 短轮询、长轮询、SSE、Websocket

STM32 | 有源蜂鸣器响,无源蜂鸣器播音乐

目录 Overview 有源蜂鸣器 无源蜂鸣器 有源蜂鸣器控制 GPIO配置 控制程序 无源蜂鸣器控制 反转GPIO控制 GPIO配置 控制接口 PWM控制 GPIO配置 控制函数 改变频率播音乐 原理 1. 频率决定音调 2. 占空比决定音量 GPIO初始化 结构体定义和音符频率表 播放接口 …

第十四章 gin基础

文章目录Gin快速搭建一个web服务Gin数据交互JSON串内容规范Gin使用结构体返回数据给前端Gin配置POST类型的路由Gin获取GET请求参数Gin获取POST请求参数-form-data类型Gin获取POST请求参数-JSON类型Gin获取参数绑定至结构体Gin快速搭建一个web服务 下载包 \\新建一个文件&…

Baumer工业相机堡盟工业相机如何通过YoloV8的深度学习模型实现PCB的缺陷检测(C#代码,UI界面版)

Baumer工业相机堡盟工业相机如何通过YoloV8的深度学习模型实现PCB的缺陷检测&#xff08;C#代码&#xff0c;UI界面版&#xff09;工业相机使用YoloV8模型实现PCB的缺陷检测工业相机实现YoloV8模型实现PCB的缺陷检测的技术背景在相机SDK中获取图像转换图像的代码分析工业相机图…

【Vivado那些事儿】AMD-XILINX 7系列比特流加密

前提&#xff1a;加密有风险&#xff0c;操作需谨慎前言在许多项目中&#xff0c;经过漫长的等待&#xff0c;我们的 FPGA 设计终于可以投入现场部署了。前期的资金的投入及知识产权的保护&#xff0c;我们需要对现场部署的 FPGA 进行比特流保护以防止逆向工程和未经授权的重复…