Docker使用笔记
0x00 前言
在一些漏洞环境的复现中,docker相比虚拟机要方便的多,而且更节省内存,启动更快。能节约我们非常多时间。对安全研究人员来说,docker是必须掌握的一样工具。
0x01 docker
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
0x02 docker安装
- Ubuntu中安装:
http://www.runoob.com/docker/ubuntu-docker-install.html
- Windows中安装:
http://www.runoob.com/docker/windows-docker-install.html
其中windows10专业版(必须是专业版,其他版本实测可以安装但是无法直接使用linux container模式)可以使用docker for windows、其余的版本安装Docker Toolbox。
- MacOS安装
http://www.runoob.com/docker/macos-docker-install.html
0x03 更换镜像源
国内直接访问docker官方镜像源拉取镜像时速度会非常慢,我们需要将docker源切换到阿里镜像源或者网易镜像源。
源地址获取
- 阿里源地址:
在https://dev.aliyun.com/search.html登陆自己的阿里云账户,在管理中心->镜像加速器中会有自己的专属加速地址
- 网易源地址:
源地址更换
- Ubuntu中更换:
修改daemon配置文件/etc/docker/daemon.json
1 |
|
如果要用阿里源,上面的仓库地址使用自己的阿里源专属地址即可。
- Docker for Windows中更换:
在系统右下角托盘图标内右键菜单选择 Settings,打开配置窗口后左侧导航菜单选择 Docker Daemon。编辑窗口内的JSON串,填写加速器地址
1 |
|
- Docker for Mac中更换:
右键点击桌面顶栏的 docker 图标,选择 Preferences ,在 Daemon 标签(Docker 17.03 之前版本为 Advanced 标签)下的 Registry mirrors 列表中将
http://hub-mirror.c.163.com 加到”registry-mirrors”的数组里,点击 Apply & Restart按钮,等待Docker重启并应用配置的镜像加速器。
- Docker Toolbox中更换:
1.在Windows命令行执行docker-machine ssh [machine-name]进入VM bash
2.sudo vi /var/lib/boot2docker/profile
3.在–label provider=virtualbox的下一行添加–registry-mirror https://xxxxxxxx.mirror.aliyuncs.com
4.重启docker服务:sudo /etc/init.d/docker restart或者重启VM:exit退出VM bash,在Windows命令行中执行docker-machine restart
0x04 docker基础命令
查询、下载、日志
- 查看docker信息:docker info
- 拉取镜像:docker pull <镜像名>
- 在线搜索镜像:docker search <镜像名>
- 查询本机所有的镜像:docker images
- 查看正在运行容器:docker ps
- 查看某容器内运行的进程:docker top
- 查询某个容器的所有操作记录:docker logs {容器ID|容器名称}
删除容器、镜像
- 删除单个容器:docker rm <容器名or ID>
- 删除单个镜像:docker rmi
启动停止容器
- 停止某个容器:docker stop <容器名or ID>
- 启动某个容器:docker start <容器名or ID>
- 杀掉某个容器:docker kill <容器名or ID>
docker运行容器
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
其中image为为容器名、options是配置参数、command是命令
docker的配置参数非常多,我们常用的一般是用docker开启一个命令交互界面
1 |
|
其中
-t:在新容器内指定一个伪终端或终端。
-i:允许你对容器内的标准输入 (STDIN) 进行交互。
更多的参数可以参考:
1 |
|
docker提交容器副本
我们一般对一个容器进行更改之后,想要保留它下次再使用,可以使用commit命令
1 |
|
其中
- -m是提交时的更新信息。
- -a是作者名。
0x05 总结
docker的命令还有非常多,但是我们只需要掌握上面的一些命令,就可以在每次需要搭建漏洞环境时,从网络上寻找别人配置好的镜像拉取下来使用,能够节约非常多的时间。而且如果你的设备配置不是很高的话,docker在物理机中运行也远远比运行一个完整的虚拟机要流畅的多。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!