docker入门系列一

这个总结其实很早之前就想写了,结果就是因为一直在处理搭建博客的事。现在稳定下来,而且刚好在给某比赛出题,所以再复习记录一遍docker的使用。
写文章是很费时的事,主要还是站在前人的肩膀上。

起点从docker的安装开始

实验环境:

阿里云轻量应用服务器 Ubuntu16.04

安装docker

#先换国内源,网上教程很多不再赘述,记得先备份
#更新系统软件
sudo apt-get update
#安装依赖包
sudo apt-get install 
sudo apt-get install apt-transport-https
sudo apt-get install ca-certificates
sudo apt-get install curl
sudo apt-get installsoft ware-properties-common
#添加官方密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
#添加仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
#再次更新软件
sudo apt-get update
#安装docker
sudo apt install docker.io
#更换国内docker pull源
vi /etc/docker/daemon.json
#切换到i模式,粘贴下面代码
{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ]
}
#退出
:wq
#重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker
#若报错sudo: unable to resolve host xxxxxxx可忽略
#查看是否安装成功
docker -v

1-1

第一个例子先从docker搭建DVWA开始

在docker hub中查找lamp环境并拉去到本地

docker search lamp

2-1

docker pull tutum/lamp

3-1

查看本地拉取的镜像docker images

docker images

4-1

映射docker8080端口到本地启动,进入docker bash环境下

这里端口号可以按自己实际情况决定

docker run -i -t -p 8080:80 tutum/lamp /bin/bash

初始化lamp环境

此lamp环境还自带了一些服务脚本可以一键启动web环境

首先要执行run.sh,初始化数据库,默认数据库root是没有密码的,给了一个admin账户及一个随机密码,这里不使用admin账户,如果root用户进不去,先使用admin进去一次退出就行。

./run.sh

5-1

待初始化完成后使用ctrl+c终止

6-1

给root用户设置密码,默认是没有密码的

进入mysql设置root密码

mysql -uroot -p

默认空密码,回车确认,设置密码为123456(这个密码随意,记得住就行)

set password for root@localhost = password('123456');

给root账户权限

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';

7-1

删除admin账户

drop user admin@'%';

退出

exit;
如何查看docker运行情况?

先使用ctrl+p,ctrl+q退出docker的 bash 让docker在后台运行。

8-1

docker ps

9

上传本地网站源码到docker

使用docker cp上传本地源码到docke容器根目录下,进行这不的时候先确认DVWA源码目录位置

docker cp xfdvwa 45a:
#45a是我这里的简写,一般输入CONTAINER ID的前三位即可

10

此处需要注意的是:

docker cp 、attach 后面的参数是容器id,不是镜像名,每次启动id都是不同的,如果每次启动docker镜像后都有修改,退出时记得一定要保存镜像,或者后台,否则直接退出docker上次的操作就没有了。

进入后台运行的docker

#第一种进入方法。
#使用该命令有一个问题。当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。因为这个原因,所以docker attach命令不太适合于生产环境,平时自己开发应用时可以使用该命令。
docker attach ID号

#第二种方法
docker exec -it ID号 /bin/bash
切记退出的时候如果使用exit退出,那么这个docker会被关闭。
建议使用ctrl+p,ctrl+q
再次进入的时候需要使用
#查看所有镜像
docker ps -a
#启动
docker start ID号

继续往下,删除网站根目录下默认的文件

cd /var/www/html
rm -rf ./*

11

复制网站源码到网站根目录下

cd /xfdvwa
cp -r ./* /var/www/html

启动web容器apache2的服务

service apache2 start

12

修改网站源码中的配置文件

cd /var/www/html/config
#注意,官网下载下来的源码是config.inc.php.dist,修改完了要把这个名字改为config.inc.php才能正常打开DVWA
vi config.inc.php.dist

把这里修改成123456,因为之前mysql密码是123456,保持一致

13

重启数据库和apache

sudo service mysql restart
sudo service apache2 restart

打开网页看是否成功,默认进入设置页面

www.example.com:8080

点击创建\重置数据库

14

成功会跳转到登录页面

默认

username:admin
password:password

15

16

后面的操作略~
本次搭建的平台地址:
XFDVWA

目前我已经将此次配置的docker镜像仓库部署于阿里云,想使用这个镜像直接pull就好

docker pull registry.cn-hangzhou.aliyuncs.com/xiafeng-demo/xiafeng:0.0.1

参考链接:
基于docker的快速化部署DVWA靶场环境
docker学习笔记5【实战:将ctfweb题环境docker打包供他人使用
阿里云ubuntu16.04实测配置【php+mysql+apache】