使用Docker(附各种坑的解决过程)

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

 

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

 

1、虚拟机的网络连接

 

 

 

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

 

(一) 桥接模式

在桥接模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机(主机和虚拟机处于对等地位),它可以访问网内任何一台机器。在桥接模式下,我们往往需要为虚拟主机配置IP地址、子网掩码等(注意虚拟主机的ip地址要和主机ip地址在同一网段)使用桥接模式的虚拟系统和主机的关系,就如同连接在一个集线器上的两台电脑;要让他们通讯就需要为虚拟系统配置ip地址和子网掩码。如果我们需要在局域网内建立一个虚拟服务器,并为局域网用户提供服务,那就要选择桥接模式。

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

(二) NAT模式

NAT,是Network Address Translation的缩写,意即网络地址转换。使用NAT模式虚拟系统可把物理主机作为路由器访问互联网,NAT模式也是VMware创建虚拟机的默认网络连接模式。使用NAT模式网络连接时,VMware会在主机上建立单独的专用网络,用以在主机和虚拟机之间相互通信。虚拟机向外部网络发送的请求数据"包裹",都会交由NAT网络适配器加上"特殊标记"并以主机的名义转发出去,外部网络返回的响应数据"包裹",也是先由主机接收,然后交由NAT网络适配器根据"特殊标记"进行识别并转发给对应的虚拟机,因此,虚拟机在外部网络中不必具有自己的IP地址。从外部网络来看,虚拟机和主机在共享一个IP地址,默认情况下,外部网络终端也无法访问到虚拟机。此外,在一台主机上只允许有一个NAT模式的虚拟网络。因此,同一台主机上的多个采用NAT模式网络连接的虚拟机也是可以相互访问的。

(三)主机模式

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

 

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

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

 

 

 

 

 

 

2、Centos内核

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

 

 

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

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/目录下

 

 

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

 

 

可以查看所有仓库中所有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

 

 

更改后   加一些空格

 

 

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

 

 

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

posted @ 2020-12-03 19:39  struggler-ma  阅读(380)  评论(0编辑  收藏  举报