一,Docker的下载及安装
此处可能需要魔法
Windows的docker下载链接:https://docs.docker.com/desktop/install/windows-install/
下载完成后打开电脑的控制面板>程序>启用或关闭Windows功能>找到
Hype-V
,Windows虚拟机监控程序平台
,适用于Linux的Windows子系统
,虚拟机平台
打开docker的安装程序,一路默认即可
测试docker,安装完成后在cmd中
docker pull hello-world
,若在docker面板的images中显示hello-world
镜像,即为成功
二,Dockerfile的配置及镜像创建
此处可能需要魔法
推荐镜像:ctftraining/base_image_nginx_php_73(十分推荐)
新建文件夹,重命名一下,新建Dockerfile文件
FROM ctftraining/base_image_nginx_mysql_php_56 COPY var /var/www/html # 个人题目需要,所以我只写了这些
新建start.sh
sleep 1 #启动mysql find /var/lib/mysql -type f -exec touch {} \; && service mysql start #设置mysql的root用户密码 mysqladmin -u root password "root" mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS ctf" #启动apache /usr/sbin/apache2ctl -D FOREGROUND # service apache2 start # /bin/bash
在目录里打开cmd,输入
docker build -u <镜像名字> <Dockerfile所在文件夹的绝对路径>
docker images
若显示<镜像名字>则创建成功若对此处仍有问题请跳转二位大佬的文章:Innocent..&&OceanSec
三, 部署自己ctf题目(Windows)
- 在docker中打开已经创建完成的本地镜像
- 点击run后,设置镜像端口(任意空闲端口),之后启动
- 完成后点击镜像,选择
Files
一栏,var/www/html,若是打不开可以考虑使用Exec
中的Linux终端进行创建,亦或者直接重启镜像 - 将自己的题目源码直接原封不动的依次放在镜像文件的相同路径,没有的就新建
- 重启镜像,打开
四,将题目上传至docker.hub
此处可能需要魔法
ps:以下命令若未曾强调均在Windows的cmd中执行
- 先在docker中运行自己的镜像
docker ps
,复制自己的镜像ID,例如:f0a54132e977
docker commit <镜像id> <docker账号/库名>
重构镜像名称docker tag <镜像ID> <镜像名字>:0.1(版本号)
给镜像打版本号docker push <镜像名字>:<版本号>
- 若仍然对此步有疑惑,请跳转到二位大佬的文章夏天|여름이다&&liyinchi1988
五,测试是否成功
此处可能需要魔法
- 在docker面板的images>hub中查看是存在上传的镜像
- 点击pull测试是否成功拉取,
- run镜像
- 打开页面后显示phpinfo(),即为成功