docker简单学习及简单部署CTF题


1.什么是docker: Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

2.为什么使用docker: docker有以下优点,更高效的利用系统资源,更快速的启动时间,一致的运行环境,持续交付和部署,更轻松的迁移,更轻松的维护和扩展,对比传统虚拟机总结

特性 容器 虚拟机
启动 秒级 分钟级
硬盘使用 一般为 MB 一般为 GB
性能 接近原生 弱于
系统支持量 单机支持上千个容器 一般几十个

话不多说,开始使用docker,下面都以root用户运行

1.安装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 -v    //查看docker版本 出现Docker version 19.03.4, build 9013bf583a类似文字,则安装成功

2.使用docker镜像

vim /etc/docker/daemon.json

添加以下代码,之后保存

{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ]
}
sudo systemctl daemon-reload
sudo 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,映射端口为8087-->80运行一个容器
docker ps    //查看正在运行的docker容器
docker ps -a    //查看所有的docker容器
docker start id        //运行docker容器
docker stop id        //停止docker容器

3.用容器部署CTF题

docker exec -it id /bin/bash    //进入docker容器shell,id一般取前三位即可

进入容器后,搭建一个php7+nginx的简单服务

apt-get update    //首先更新容器软件源,之后可以进行换源,换源后要再次更新软件源
apt-get install nginx    //安装nginx
apt-get install php7.2-fpm    //安装fpm扩展
 cd /etc/nginx/sites-available
 vim default

将里面内容作出以下修改,不清楚可以自行查询,这里不多讲

 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.2-fpm.sock;
        }
cd /var/www/html    //默认网站根目录
touch test.php
vim test.php    //写入<?php phpinfo();?>,若出现phpinfo界面则成功了,可以自己搭建CTF题

3.打包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简单的学习。


Author: LiM
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source LiM !
 Previous
Syc Geek 10th web部分题解 Syc Geek 10th web部分题解
打比赛先撸一只猫查看源码,发现简单考点 <!-- $cat=$_GET['cat']; echo $cat; if($cat=='dog'){ echo 'Syc{cat_cat_cat_cat}'; } --> 只需GET传参cat
2019-10-26 LiM
Next 
linux反弹shell脚本的分析 linux反弹shell脚本的分析
linux的反弹shell脚本,实战,awd都可使用,代码来自原Google安全团队,在目标机运行下面python代码,nohup python shell.py (your ip) (your port) & 在vps进行监听,n
2019-10-21 LiM
  TOC