Docker搭建Vulhub遇见的问题及解决方案

原本想用docker复现一下vul的漏洞。
装docker过程中遇到了很多问题,
昨天熬夜到凌晨三点都没弄完。
中午又找了找原因,终于全部解决了,
小结一下。

镜像

去官方下载了centos 8的镜像,
https://www.centos.org/

在vmware中安装centos系统

参考https://blog.csdn.net/babyxue/article/details/80970526
在安装过程中遇到第一个问题,卡在安装界面
通过百度和尝试,
发现在设置里的CD/DVD默认路径错误,
修改为centos 8镜像的路径即可。

尝试一键安装docker 失败

curl -s https://get.docker.com/ | sh

运行命令时,显示没有这个命令,
我尝试去掉了| sh,发现回显报错了很多,最后一个error,失败了。

经了解得知| sh是linux中运行shell的命令,是shell的解释器
这里可以理解成sh 执行了curl下载的内容

尝试下载到主机上再拖入centos系统 失败

在我docker下载完成后,发现将docker没办法拖入centos系统
因为我还没有安装vmware tools

尝试安装wmare tools

参考https://jingyan.baidu.com/article/af9f5a2df3bce003150a4559.html
在安装过程中发现没有root权限,几经周折,才得以解决。

su -   切换至root权限
su your-name    切换回原账号

安装docker-compose

解压docker后,还要安装docker-compose。

Docker-compose用于组合服务与内网。
有部分环境涉及到多个容器,且不同环境开启的端口、目录也不相同,
所以Vulhub选择使用docker-compose做环境一键化管理工具。
用户不再需要学习docker命令的各种参数与用法,
只需要简单地执行 docker-compose up -d即可启动容器。

由于centos 8并没有自带pip(自带了python3)
而安装docker-compose需要pip,所以目标又转向了pip的安装

curl -s https://bootstrap.pypa.io/get-pip.py | python3

安装完pip后就可以进行docker-compose的安装了。

pip install docker-compose

下载Vulhub

安装完成dockerdocker-compose后,拉取Vulhub到本地任意目录即可

git clone https://github.com/vulhub/vulhub.git

意外发生,无法启动docker

下载完Vulhub后我发现竟然没法打开docker
查找了好久好久的资料,昨天晚上睡前都没解决。凌晨三点实在熬不住了。
今天起来又好好看了看报错,
发现了问题所在,一大长条的报错中有这样一句话

Error: Problem 1: problem with installed package podman-3.0.1-6.module_el8.4

即CentOS 8中安装的DockerPodman发生冲突
我又去查阅Podman
两种解决办法
第一种 删除Podman

查看是否安装 Podman

rpm -q podman
podman-1.4.2-5.module_el8.1.0+237+63e26edc.x86_64

删除Podman

dnf remove podman

第二种尝试在命令行中添加 --allowerasing 来替换冲突的软件包 或 --skip-broken 来跳过无法安装的软件包 或 --nobest 来不只使用最佳选择的软件包

yum erase podman buildah
yum install docker-ce docker-ce-cli containerd.io

我这里仅采用了第一种方法,解决了docker问题。

启动docker

启动

docker:systemctl start docker

查看

docker:ps -ef | grep docker

漏洞靶场的编译和运行:

docker-compose build 或 docker-compose up -d

docker-compose up -d运行后,会自动查找当前目录下的配置文件。
如果配置文件中包含的环境均已经存在,则不会再次编译;
如果配置文件中包含的环境不存在,则会自动进行编译。
所以,其实 docker-compose up -d命令是包含了 docker-compose build的。
如果更新了配置文件,你可以手工执行 docker-compose build来重新编译靶场环境。

关闭docker

docker-compose down

关闭正在运行的容器
删除所有相关容器
移除NAT(docker-compose在运行的时候会创建一个NAT网段)
但不会移除编译好的漏洞镜像,下次再执行 docker-compose up -d命令,就不需要再次编译相关镜像了。

posted @   LinkPoc  阅读(1793)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
阅读排行:
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验
点击右上角即可分享
微信分享提示