安装docker及其相关组件:
apt-get update //更新软件
apt-get install
apt-get install apt-transport-https
apt-get install ca-certificates
apt-get install curl
apt-get install software-properties-common //安装依赖包
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - //添加官方密钥
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" //添加仓库
apt-get update //更新软件
apt-get install docker-ce //安装docker,默认安装最新版
docker使用教程:
docker -v //查看docker版本
vim /etc/docker/daemon.json //编辑docker配置文件
添加以下代码之后保存
{
"registry-mirrors": [
"https://registry.docker-cn.com"
]
}//镜像加速
开机自启动(可选)
systemctl daemon-reload //
systemctl restart docker //重启docker
下载及运行镜像:
docker pull ubuntu:16.04 //拉取ubuntu:16.04镜像
docker images //查看本地镜像
docker run -it -d --name ctf -p 8087:80 ubuntu:16.04 //用ubuntu:16.04镜像,命名为ctf,将容器80端口映射到8087端口
docker exec -it ctf /bin/bash //进入docker容器的shell
docker常用命令:
docker ps //查看正在运行的docker容器(可以看到容器的详细信息,如id,这个有大用处)
docker ps -a //查看全部的docker容器
docker start id //运行容器(id一般取前三位即可)
docker stop id //停止运行docker容器
docker commit id ctf:ctf //将容器固化为镜像
docker export id > ctf.tar //打包docker压缩包供其他电脑使用
docker load < ctf.tar //导入文件为docker镜像(如果出现open /var/lib/docker/tmp/docker-import-970689518/bin/json: no such file or directory,说明这个tar包缺少docker所需要的一些json文件,不能直接导入)
cat ctf.tar | docker import - ctf //第二种导入方法(可以通过docker images查看是否导入成功)
docker run -p 2333:80 --name ctf -dit ctf:latest /bin/bash //导入成功之后,用这条命令将镜像初始化为名字为ctf的容器,端口2333映射为容器的80端口
进入docker容器之后的一些配置:
apt-get update //第一件事自然是换源,和更新软件源
apt-get install nginx //安装nginx
apt-get install php7.0-fpm //安装fpm拓展,可能版本会有所不同
cd /etc/nginx/site-avaliable
vim default //编辑配置文件(有的镜像不自带vim,可以使用vi或自行下载)
修改以下内容:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php7.0-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;//改成自己的fpm拓展版本,版本一致则不用修改
}
退出之后
vim /etc/nginx/nginx.conf //编辑配置文件
找到
server {
listen 92.168.2.380;
server_name 1;
autoindex on; #是否允许访问目录
location / {
root html;
index index.html index.htm;//就是这里,加一个index.php,即默认页面为index.html,index.htm或index.php
}
修改完配置之后,重启nginx服务
service nginx restart
cd /var/www/html //默认网站根目录
touch test.php //新建文件(当没有该文件时vim会自动创建一个文件,所以我感觉有没有这条命令都无所谓)
vim test.php //自己写入一些东西,然后通过网站端口访问该文件,看能否有回显,如果成功,就可以搭建ctf题了。
本机传文件进入容器
docker ps //获取短id或名字
这里前面一长串的字符串就是短id,还有指定的名字等等。
docker inspect -f '{{.Id}}' ctf
即可得到id全称
docker cp 本地文件路径 id全称:容器路径
docker cp id全称:容器文件路径 本地路径//从容器传文件进入本机
把容器的文件复制出来
获取id同上,短id即可。
docker cp id:docker文件路径 存放在本机的路径
重命名容器
docker rename 原名 新名
删除容器
先获取容器的id,比如
docker stop 696
docker rm 696865657e1c //删除容器
删除镜像
和删除容器一样的流程:
获取镜像id:
docker rmi 664940c165c3