vlambda博客
学习文章列表

CTF秘技——使用Docker(附各种坑的解决过程)

首先呢  我们打CTF,是十分需要docker环境的,因为github上面可以搞到很多漏洞环境和复现的题目,用Dockerfile构建很轻松,而且我比较喜欢在本地搭建,这样宿主机和虚拟机在同一个网段,访问起来比较方便。


安装方式下文会说,但我先记录一下我之前遇到的问题,看看能否帮助大家:


1、虚拟机的网络连接

可以看到我使用的是桥接模式,简单说说这几种模式:


(一) 桥接模式

但对于想进行种种网络实验的朋友这种模式是不太适合的,因为你无法对虚拟机的网络进行控制,它直接出去了。

(二) NAT模式

(三)主机模式

主机模式下,真实环境和虚拟环境是隔离开的;在这种模式下,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开。


之前我一直使用NAT模式,这样虚拟机的请求会通过主机发送出去,再结合VP恩,你的虚拟机镜像也可以勉强访问一些国外的一些镜像源去下载一些东西。但后来在安装docker的密钥还有请求下载repo源的时候,无论怎样都无法连接。

后面发现ping宿主机也无法ping通,所以这里建议要用NAT模式最好把宿主机的防火墙关闭,要不就是用桥接模式,你的虚拟机和宿主机仍然处于一个内网状态。


CTF秘技——使用Docker(附各种坑的解决过程)


2、Centos内核

Docker要求的 centos 内核3.10以上,我对内核版本那些不太了解,总之目前找的centos7的镜像的内核3.10左右,建议在安装docker的时候可以升级一下内核(如果/boot分区不够大就比较麻烦)

CTF秘技——使用Docker(附各种坑的解决过程)

先用命令,查看内核版本:

uname -r 


升级内核的参考教程:

https://blog.csdn.net/u012858451/article/details/81911729


3、安装docker 

查看linux发行版,内核

[root@localhost ~]# cat /etc/redhat-releaseCentOS Linux release 7.8.2003 (Core)[root@localhost ~]# uname -r5.7.9-1.el7.elrepo.x86_64

替换阿里云yum源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #下载阿里yum源2 yum makecache  #生成仓库缓存 

安装依赖

yum install -y yum-utils device-mapper-persistent-data lvm2

设置yum源(选其中一个)

yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库)


但是我安装的时候又出问题了.....,在断断续续几次安装失败后,直接fq出去把repo源下载了并放置在 /etc/yum.repos.d/目录下

CTF秘技——使用Docker(附各种坑的解决过程)

最后效果是一样的,我真机智,有问题的小伙伴可以向我一样这样搞

CTF秘技——使用Docker(附各种坑的解决过程)

可以查看所有仓库中所有docker版本,并选择特定版本安装

yum list docker-ce --showduplicates | sort -r

安装docker-ce(新版dcoker有社区版和企业版,ce是社区版)

yum install docker-ce

开启docker

systemctl start docker

开机自启

systemctl enable docker


4、配置dameo.json

运行docker

docker run hello-world

这时候出现各种各样报错的话不要慌,我也试过

[root@localhost ~]# systemctl start dockerJob for docker.service failed because start of the service was attempted too often. See "systemctl status docker.service" and "journalctl -xe" for details.To force a start use "systemctl reset-failed docker.service" followed by "systemctl start docker.service" again.
[root@localhost ~]# docker search hello-worldCannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

首先看内核版本符不符合要求,第二个最大的问题就是dameo.son的配置了。daemon.json中配置的项目参数,可以更换源让自己获取镜像更快。

一个可用的dameo.json

CTF秘技——使用Docker(附各种坑的解决过程)

更改后   加一些空格

改一下dameo.json换源立刻出问题,


所以设置dameo.json一定不要有空格,仔细排查每一处,都有可能导致报错。



最后祝大家安装成功,至于docker的使用,有空会更新文章,可以后台回复docker视频教程,还可以获取详细docker入门视频,简短好用入门。