Docker 搭建服务器实例
搭建一个 nginx 服务
下载运行
docker pull nginx
docker run -d -p 80:80 nginx
将自己的网页传输到 nginx 容器
法一(不推荐):给容器安装 vim,直接在容器中编辑。
法二(推荐):在自己电脑上写好网站,复制粘贴到容器中。
docker cp 自己本地文件 containerID:container内的绝对路径 docker cp ./index.html f27:/usr/share/nginx/html/ #将自己写好的 index.html 复制到 f27 容器的 #/usr/share/nginx/html/ 目录下
法三(推荐):在容器中挂载数据卷。
docker run -d -v /home/kali/66:/usr/share/nginx/html -p 8000:80 be6
搭建一个 php 服务
docker pull php:7.2-apache #下载 php 镜像
docker run -d -p 80:80 c61 #启动后台运行
vim index.php #编辑 php 起始页
docker cp ./index.php d3c:/var/www/html #将 index.php 文件复制入容器
#/var/www/html apache 路径
搭建一个 DVMA 服务——image
搜索镜像
docker search dvwa #也可以直接去 dockerhub 网站上搜索
下载镜像
docker pull c0ny1/dvwa:v1.9
开启容器
docker run -d -p 80:80 imageID
此时开启了 dvwa 以后,物理机的 IP 地址为:
192.168.85.1
,虚拟机 ubuntu 的 IP 地址为:192.168.85.129
,dvwa 的 IP 地址为172.17.0.2
。
物理机访问 dvwa:
http://192.168.85.129
:可通。http://172.17.0.2
、http://127.0.0.1
:不可通,非同一网段。ubuntu 访问 dvwa:
http://192.168.85.129
、http://172.17.0.2
、http://127.0.0.1
:均可通,192
与127
都是其本身,172
是因为开启 docker 后虚拟机会多一个172
的网段 IP(虚拟网关、虚拟网卡……)。
搭建一个 DVMA 服务——源码
下载 dvwa 源代码
git clone https://github.com/digininja/DVWA.git
选择合适的基础镜像
docker pull php:7.2-apache
docker pull mysql:5.7
创建网络
docker network create -d bridge test_network
创建容器并指定网络和容器名
#创建 php 容器,指定网络 test_network 及容器名 dvwa_web
docker run -d -p 80:80 -v /home/kali/DVWA:/var/www/html --network test_network --name dvwa_web c61
#创建 mysql 容器,指定网络 test_network 及容器名 dvwa_db
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=12345 --network test_network --name dvwa_db 510
配置 dvwa 源代码
- 将配置文件中的
config.inc.php.dist
复制为config.inc.php
。 - 编辑
config.inc.php
。
报错,连接
- 此时连接发现如下图报错,出现该报错,安装
mysqli
即可。
进入容器
docker exec -it dvwa_web bash
执行命令
docker-php-ext-install mysqli pdo_mysql
退出容器并重启容器
docker restart dvwa_web
搭建一个 pikachu 服务
下载源码
git clone https://github.com/zhuifengshaonianhanlu/pikachu.git
创建网络
docker network create -d bridge test_network
启动 php 和 mysql 容器
#创建 php 容器,指定网络 test_network 及容器名 pikachu_web
docker run -d -p 80:80 -v /home/kali/pikachu:/var/www/html --network test_network --name pikachu_web c61
#创建 mysql 容器,指定网络 test_network 及容器名 pikachu_db
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=12345 --network test_network --name pikachu_db 510
安装 mysqli
#进入容器
docker exec -it pikachu_web bash
#安装 mysqli
docker-php-ext-install mysqli pdo_mysql
#退出并重启容器
docker restart pikachu_web
编辑 pikachu 配置
vim /home/kali/pikachu/inc/config.inc.php
#进入后配置正确的 mysqlID、密码
报错,连接
- 此时连接发现如下图所示报错。
重新创建 mysql 容器,添加数据库名即可
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=150105 -e MYSQL_DATABASE=pikachu --network test_network --name pikachu_db 510