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
安装完成docker
和docker-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中安装的Docker
和Podman
发生冲突
我又去查阅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
命令,就不需要再次编译相关镜像了。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验