Docker 搭建靶场很方便,但是每次搭建靶场找到一个顺手的底层镜像都会消耗不少时间,所以特此花时间写下本文,磨刀不误砍柴工,整理完本文后后面再搭建 Docker 靶场的话,效率就会高很多了。

PHP

有时候需要一个 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

LAMP

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

LNMP

挖坑,待补充

其他

挖坑,待补充

常用命令

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 重写了一个页面用以感谢支持我的朋友,详情请看 打赏列表 | 国光