0x00 docker简介

把原来的笔记整理了一下,结合前几天的一个漏洞,整理一篇简单的操作文档,希望能帮助有缘人。

docker是一个开源的应用容器引擎,开发者可以打包自己的应用到容器里面,然后迁移到其他机器的docker应用中,可以实现快速部署。如果出现的故障,可以通过镜像,快速恢复服务。dockerde 原理是利用Linux内核虚拟机化技术(LXC),提供轻量级的虚拟化,以便隔离进程和资源。LXC不是硬件的虚拟化,而是Linux内核的级别的虚拟机化,相对于传统的虚拟机,节省了很多硬件资源。


0x01 docker的安装

安装的相关的文档可以在https://docs.docker.com/进行查找里面有各种系统版本的安装方法,这里以debian为例,其他的类似。

  1. 更新apt索引
    apt-get update

2.更新所需组件
apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common

3.增加官方 GPG key:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

4.增加官方稳定源
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \ stable"

5.再次更新一下apt索引,因为你刚才加入了新的源,需要更新后才能生效。
apt-get update

6.安装docker
apt-get install docker-ce docker-ce-cli containerd.io

7.测试安装是否成功
docker run hello-world

0x02 docker的基本操作命令

docker的相关的命令一般会在命令的开始加上docker这个词。

1.docker search 镜像名
可以以关键字的方式在docker hub上进行检索

2.docker pull 获取相关的镜像

3.docker images查看相关的镜像
其中TAG是容器的标签,用来区分不同的容器,如果不填写的话默认是latest,如果本地不存在latest版本则会自行下载。

IMAGE ID是镜像的16位短ID

4.容器启动 docker run
docker run -itd –-name 容器名称 -p 主机端口:容器端口 镜像名称:标签 /bin/bash,下面这一长串是容器的完整ID。

5.查看进程 docker ps 列出当前正在运行的容器。

6.容器的启停
docker stop/start 容器名/ID
停止或启动容器,若是填写容器名则要全写上去,如果用的是ID,这里的ID并不需要写完整的ID或者16位短ID,只需要能与其他容器区分开即可,就算你只写第一个字符都是可以的,只要能区分开。

7.进入容器
docker attach 容器名/ID

或docker exec -it 容器名/ID bin/bash

8.文件拷贝
docker cp 主机中的文件目录 容器名:容器中的目录。将文件从主机拷贝到容器中

这些docker的基本命令足够可以进行漏洞环境的搭建了。

0x03 漏洞复现环境搭建

建立一个漏洞复现的环境,其实和建立一个应用的步骤是类似的。只是漏洞复现环境是存在漏洞的应用而已。

对环境的搭建比较方便的方式是通过dockerfile结合docker-compose

Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于拉取的基础镜像并最终创建一个新的镜像,通过Dockerfile我们可以创建一个你需要的镜像,里面是包含了你要安装的软件,相当于是提前定制好要安装的拓展,执行的命令等,然后一键执行,极大地简化操作流程。Dockerfile由4部分组成:基础镜像信息、维护者信息、镜像操作指令和容器启动指令。

Compose是用来定义和运行一个或多个容器应用的工具。Compose是使用YML文件来定义多容器应用的,它还会用docker-compose up命令把完整的应用运行起来。

这里以前几天刚刚公布的CVE-2020-1938为例,简单编写,dockerfile如下:

FROM vulhub/tomcat:8.5.19

MAINTAINER test

RUN chmod a+x /usr/local/tomcat/bin/*.sh

COPY info.war /usr/local/tomcat/webapps/info.war

EXPOSE 8080
EXPOSE 8009
 
1
FROM vulhub/tomcat:8.5.19
2

3
MAINTAINER test
4

5
RUN chmod a+x /usr/local/tomcat/bin/*.sh
6

7
COPY info.war /usr/local/tomcat/webapps/info.war
8

9
EXPOSE 8080
10
EXPOSE 8009

docker-comfile.yml

webapp:
build: .
ports:
- "80:8080"
-"8009:8009"
 
1
webapp:
2
    build: .
3
    ports:
4
        - "80:8080"
5
        -"8009:8009"

执行docker-compose up -d

通过映射的80,可以直接访问搭建的docker应用


利用相关的poc进行漏洞验证

docker在漏洞复现的环境搭建上,真的是特别方便。更多的命令细节,可以使用help及官方文档:
https://docs.docker.com/

欢迎关注我的公众号,等你


最新文章

  1. Jetty 简单使用
  2. node四大优势 转
  3. JavaScript高级程序设计之动态脚本及动态样式
  4. (转)python 优先队列
  5. 深入浅出百度地图API开发系列(1):前言
  6. 通俗易懂的讲解iphone视图控制器的生命周期
  7. URAL 2066 Simple Expression (水题,暴力)
  8. VMware 虚拟机使用RedHat,出现 connect: Network is unreachable解決方法
  9. VS生成桌面应用程序
  10. poj 2155 matrix 二维线段树 线段树套线段树
  11. 【C#复习总结】细说 Lambda表达式
  12. JSP错误页面处理的两种方式
  13. [Leetcode]146.LRU缓存机制
  14. MySQL外键和高级查询(连接查询、联合查询、子查询、去重查询)
  15. ETL项目场景
  16. 【Android】3.17 示例17--周边雷达功能
  17. 二、jenkins配置email(以腾讯企业qq为例)
  18. mybatis-初步使用
  19. django-admin管理后台高级自定义
  20. DATASTAGE中ODBC连接的配置

热门文章

  1. pdf 转word 工具
  2. Pytest配置文件声明自定义用例标识
  3. list.add方法参数详解
  4. 对PatchGAN的感知域(receptive_field)理解
  5. 10 张图打开 CPU 缓存一致性的大门
  6. 一套轻量级销售团队管理系统【CRM】
  7. vue-cli中使用全局less变量
  8. java安全编码指南之:文件和共享目录的安全性
  9. @Transactional 注意事项、方法调用
  10. 在IIS中部署前后端应用,多么痛的领悟!