原本想用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,失敗了。
嘗試下載到主機上再拖入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命令,就不需要再次編譯相關鏡像了。
