Docker 搭建靶场很方便,但是每次搭建靶场找到一个顺手的底层镜像都会消耗不少时间,所以特此花时间写下本文,磨刀不误砍柴工,整理完本文后后面再搭建 Docker 靶场的话,效率就会高很多了。
有时候需要一个 PHP 环境,如果不考虑使用数据库的情况下,推荐使用下面的这些镜像:
PHP 5.2
PHP版本 | 系统版本 | Apache 版本 | Web路径 | COMMAND |
---|---|---|---|---|
5.2.17 | Ubuntu 16.04.5 | 2.2.22 | /var/www/html | /init.sh |
# 拉取镜像
docker pull seti/php52:latest
# 运行容器
docker run -d -p 8080:80 --name PHP5.2 seti/php52:latest
PHP 5.6
PHP版本 | 系统版本 | Apache 版本 | Web路径 | COMMAND |
---|---|---|---|---|
5.6.40 | Ubuntu 16.04.5 | 2.4.37 | /var/www/app | /sbin/entrypoint.sh |
# 拉取镜像
docker pull romeoz/docker-apache-php:5.6
# 运行容器
docker run -d -p 8080:80 --name PHP5.6 romeoz/docker-apache-php:5.6
PHP 7.3
PHP版本 | 系统版本 | Apache 版本 | Web路径 | COMMAND |
---|---|---|---|---|
7.3.10 | Ubuntu 18.04.3 | 2.4.4 | /var/www/app | /sbin/entrypoint.sh |
# 拉取镜像
docker pull romeoz/docker-apache-php:7.3
# 运行容器
docker run -d -p 8080:80 --name PHP7.3 romeoz/docker-apache-php:7.3
PHP 5.6.28 + MariaDB 10.1.19
PHP版本 | MariaDB版本 | 系统版本 | Apache 版本 | Web路径 | COMMAND |
---|---|---|---|---|---|
5.6.28 | 10.1.19 | Alpine Linux 3.4 | 2.4.23 | /var/www/html | /start.sh |
MySQL 的用户名和密码信息:
用户名 | 密码 |
---|---|
root | 空 |
# 拉取镜像
docker pull janes/alpine-lamp:latest
# 运行容器
docker run -d -p 8080:80 --name LAMP janes/alpine-lamp:latest
PHP 5.5.9 + MySQL 5.5.61
PHP版本 | MySQL版本 | 系统版本 | Apache 版本 | Web路径 | COMMAND |
---|---|---|---|---|---|
5.5.9 | 5.5.61 | Ubuntu 14.04.5 | 2.4.7 | /var/www/html | /start.sh |
MySQL 的用户名和密码信息:
用户名 | 密码 |
---|---|
root | root |
# 拉取镜像
docker pull medicean/vulapps:base_lamp
# 运行容器
docker run -d -p 8080:80 --name LAMP medicean/vulapps:base_lamp
PHP 7.3.22 + MariaDB 10.4.15
PHP版本 | MariaDB版本 | 系统版本 | Apache 版本 | Web路径 | COMMAND |
---|---|---|---|---|---|
5.5.9 | 10.4.15 | Alpine Linux 3.11 | 2.4.46 | /var/www/localhost/htdocs | /entry.sh |
MySQL 的用户名和密码信息:
用户名 | 密码 |
---|---|
root | root(构建的时候自己设置的) |
# 拉取镜像
docker pull sqlsec/alpine-lamp
# 运行容器 记住要指定密码
docker run -d -p 8080:80 --name LAMP -e MYSQL_ROOT_PASSWORD=root sqlsec/alpine-lamp
挖坑,待补充
挖坑,待补充
Docker 靶场操作中一些比较实用的命令
# 基本操作
docker run -d -p 物理端口1:容器端口1 -p 物理端口2:物理端口2 --name 容器名 <image-name>:<tag>
docker exec -it 容器名/ID bash
# 磁盘挂载
docker run -d -p 8080:80 -v 本机路径:容器路径 --name 容器名 <image-name>:<tag>
# 容器打包镜像
docker commit -a "作者" -m "备注" 容器ID <image-name>:<tag>
# 物理机拷贝到容器
docker cp test.txt 容器ID:/var/www/html
# 容器拷贝到物理机
docker cp 容器ID:/var/www/html/test.txt 物理机路径
# 查看容器 COMMAND
docker ps -a --no-trunc
# 停止所有容器 以此类推
docker stop $(dokcer ps -aq)
# 将容器打包成规范的镜像
docker commit <exiting-Container> <hub-user>/<repo-name>[:<tag>]
# 将镜像修改成规范的镜像
docker tag <existing-image> <hub-user>/<repo-name>[:<tag>]
# 登录 Docker Hub
docker login
# 上传推送镜像到公共仓库
docker push <hub-user>/<repo-name>:<tag>
# 当前目录的 Dockerfile 创建镜像
docker build -t <image-name>:<tag> .
# 指定文件构建镜像
docker build -f /path/to/a/Dockerfile -t <image-name>:<tag> .
# 将镜像保存 tar 包
docker save -o image-name.tar <image-name>:<tag>
# 导入 tar 镜像
docker load --input image-name.tar
# docker-compose 命令相关
## 基本操作
docker-compose up -d
## 关闭并删除容器
docker-compose down
## 开启|关闭|重启已经存在的由docker-compose维护的容器
docker-compose start|stop|restart
## 运行当前内容,并重新构建
docker-compose up -d --build
本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN费用等)
没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面用以感谢支持我的朋友,详情请看 打赏列表 | 国光