前言
参考文章:
1.https://blog.csdn.net/m0_57350631/article/details/128127442
一、docker简介
Docker 是一个开源项目,诞生于 2013 年年初,最初是 dotCloud 公司内部的一个业余项目,基于 Google 公司推出的 Go 语言实现。此项目加入了 Linux 基金会,遵守 Apache License 2.0 开源协议,项目代码在 GitHub 上进行维护。
Docker 的操作十分简便,就像操作一个轻量级的虚拟机一样。得益于 Docker 轻量、方便等特点,用户可以借助 Docker 来制作漏洞运行环境,以便于后续调试和保存漏洞特定环境。
著名的漏洞环境集合 Vulhub,就是基于 Docker 和 Docker-compose 来搭建的。安全研究员可以极其便利地使用 Docker 生成一个带有特定漏洞的容器进行调试分析,从而减少在环境配置上的时间消耗,更专注于研究漏洞本身。
二、docker的基本使用方法
search 命令可以搜索指定名称和仓库的镜像,例如搜索 tomcat 的镜像:
1 | docker search tomcat |
pull 命令可以拉取指定仓库和名称以及标签的镜像。当未指定所获取镜像的 tags(标签)时,则自动拉取 latest(最新)版本的镜像
1 | docker pull bitnami/tomcat |
查看镜像
images 命令可以读取已经拉取到本地的镜像文件,并列出镜像所存放仓库名、TAG 标签、镜像编号、创建时间以及镜像大小。如果 REPOSITORY 相同而 TAG 不同,则视为不同的镜像。譬如在拉取 Ubuntu 镜像时,设定了 TAG 为 18.04,则使用2.2 Docker 容器编排 15images 查看到的 TAG 一栏会显示 18.04;如果未设定,则显示的是 latest,表示最新版。从镜像编号也可以分辨出这是两个不同的镜像
1
docker images
删除镜像
rmi 指令可以删除已经拉取到本地的镜像。在删除镜像时,需要先停止以这个镜像为模板生成的容器,否则即使添加-f 强制删除参数也无法删除镜像。当容器停止时,则可以使用-f 强制删除镜像。镜像被强制删除后,原先的容器仍然可以继续使用
1 | docker rmi bitnami/tomacat |
run 指令可以以指定的镜像为模板生成对应的容器,并自动从仓库中拉取镜像到本地。例如使用 docker run mysql
命令来生成一个 mysql 的容器
1 | docker run mysql |
run 指令还可以接受多种参数,比较常用的几个参数如下:
例如,我们需要启动一个 Tomcat 的容器,希望可以访问它的 8080 端口,并在容器启动后在后台默默运行。用户可以使用如下命令生成一个容器。当容器生成后,即可使用浏览器访问本地的 8080 端口访问容器的 Tomcat 服务。值得一提的是,如下命令中第一个 8080 指的是本机的端口号,而第二个 8080 指的是容器中运行 Tomcat服务的端口号
1 | docker run -p 8080:8080 -d tomcat |
可以看到已经启动了Tomcat服务
我们也可以在容器生成后,立即获得容器的交互式终端来管理容器内部的配置。使用命令 docker run -it ubuntu
可以生成一个简易的 Ubuntu 系统容器。生成容器后会获得一个交互式终端,可以执行 Linux 的各类命令。
使用 ps 命令可以列出已经生成且仍在运行的容器,并且会列出容器的编号、所使用的镜像和端口映射等信息。还可以添加参数进行筛选,例如-a 可以列出仍在运行和已经退出的容器,-q 仅列出容器的编号
停止容器
使用 stop 命令可以将不需要运行的容器停止,就如同将电脑关机一样。值得注意的是在进行容器的相关操作时,例如停止容器、启动容器、进入容器和删除容器等操作,不需要提供完整的容器编号,只需填写编号的部分内容,Docker 会自动匹配到相应容器
Existed状态的容器可以使用start命令重新开启。原本处于Existed状态的容器,又转变为 Up 状态
有时需要进入容器内部安装软件或修改配置等操作,此时可以借助 exec 命令进行。准确地说,exec 是用来在运行的容器内部执行命令的,但配合-it 和/bin/bash 参数,就可以得到一个 bash 的 shell,相当于进入容器内部。执行命令 docker exec -it 6e /bin/bash 将会进入编号缩写为 6e 的容器内部
当有些容器需要废弃并删除时,可以使用 rm 命令进行。在删除容器之前,需要将正在运行的容器停止,否则无法删除。如图 2-28 所示,使用 docker rm 6e 来删除编号缩写为 6e 的容器
使用 cp 命令,可以轻松地将文件复制进容器,同样可以把文件从容器复制至物理机。如图 2-29 所示,使用 docker cp ./flag.txt 28:/var/命令将物理机的 flag.txt 文件复制到编号缩写为 28 的容器中 var 目录下,同样使用 docker cp 28:/var/flag2.txt C:\Users\
ZHY\Desktop\test 将容器中的 flag2.txt 文件复制到物理机桌面上的 test 文件夹中。填写容器中的路径时,前面需要添加容器编号,才可以成功复制