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命令,就不需要再次编译相关镜像了。


__EOF__

本文作者LinkPoc
本文链接https://www.cnblogs.com/Y0uhe/p/15369164.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   LinkPoc  阅读(1829)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示