前言
由于最近的工作很多都是需要搭建漏洞环境对漏洞进行复现,所以自己也对docker的使用越来越熟练,想写一篇记录下使用docker遇到的一些问题和比较好用方便的 docker命令。
docker简介
Docker 是一种开源的自动化应用程序部署的平台,它使应用程序的打包、分发和管理变得更为简便和高效。Docker 使用容器来运行应用程序。容器可以被看作是轻量级的、可执行的软件包,它包含了运行某个软件所需要的所有内容:代码、运行时环境、库、环境变量和配置文件。
核心概念
-
容器:容器是Docker的基本单元,它是一个隔离的环境,可以在其中运行应用程序和服务。容器是从镜像创建的,运行时包含了应用及其所有的依赖。
-
镜像:镜像是一个轻量级、只读的模板,用于创建容器的实例。镜像包含有运行应用所需的代码、库、环境变量和配置文件。
-
仓库:仓库是集中存放镜像的地方。Docker Hub 是最著名的公共仓库,用户也可以搭建私有仓库来存放私有镜像。
docker用法
我这边拿kali安装docker举例,安装参考:https://cloud.tencent.com/developer/article/2348189,安装成功如图
如果你想使用docker搭建一个漏洞环境,首先你需要在docker hub或者其他的平台找到对应的docker镜像,然后使用docker pull命令拉取镜像。
这里拿CVE-2021-41773漏洞举个例子,在vulfocus搜索漏洞到该漏洞镜像如下:
使用docker pull vulfocus/apache-cve_2021_41773:latest拉取镜像,这里注意由于docker hub最近对国内用户非常不友好,直接拉取镜像可能会拉取不成功,如下:
解决这个问题可以使用容器加速服务,之前使用阿里云的容器加速服务可以正常进行镜像拉取,但是最近发现拉取某些镜像也是不行了,找到了一个好用的容器加速地址https://docker.1panel.live/,依次执行命令如下
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.1panel.live/",
"https://docker.m.daocloud.io",
"https://2h3po24q.mirror.aliyuncs.com"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
使用docker info命令查看docker配置是否生效,如下
再次执行docker pull拉取镜像,已经可以正常拉取,如下:
docker images查看拉取成功的镜像
docker ps查看启动的docker环境
docker run命令启动漏洞环境,CVE-2021-41773这个漏洞直接使用docker run -d -p 80:80 image_id 启动即可,如下
接着访问kali的80端口,看环境启动是否正常,如下:
想要进入容器的命令行,可以使用docker exec -it CONTAINER ID bash,如下:
想要修改docker镜像并保存修改,可以使用 docker commit CONTAINER ID REPOSITORY:TAG命令,如下
如何把docker环境打包发给别人,让别人可以直接使用你的环境呢?这里可以使用docker save -o 文件名.tar REPOSITORY:TAG命令,如下:
想加载别人打包好的docker环境,直接使用docker load -i 文件名.tar即可
想要对docker镜像的标签进行修改,可以使用 docker tag IMAGE ID REPOSITORY:TAG,IMAGE ID为要修改标签的镜像id,这里IMAGE ID也可以是原来的镜像的标签,REPOSITORY:TAG为要修改的标签,如下
注意
对于docker单个镜像的漏洞环境可以直接打包成tar发给别人使用,但是如果一个环境存在多个镜像无法通过docker save方式打包给别人使用,分开启动会导致环境无法正常启动,可以使用dokcer-compose启动dockerfile方式启动,这是可以连互联网的方式,如果是内网环境,可以使用vmvare导出vmdk或者使用别的平台创建漏洞环境,例如可以使用openstack创建实例把配置好的漏洞环境,导出成raw,把raw文件发送给别人即可。缺点就是文件大,没有docker传输方便。
docker有些环境启动需要访问互联网,这也是最近工作遇到的一个坑点,一个正常的环境在内网环境无法正常启动,排查发现环境启动需要访问互联网上的某些服务,所以遇到一些需要交付的docker漏洞环境,最好在断网的情况下测试一遍,没有问题才算可以。
原文始发于微信公众号(随风安全):快速上手docker——docker用法篇
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论