Docker技术-基础篇

Docker技术-基础篇

一、Docker-容器虚拟化

1、Docker是什么

        Docker是一个开源的应用容器引擎,是一个用于构建、分享(传输)、运行、验证应用程序的平台。

        说明:

        在Docker平台下,各种各样的应用、开发环境、开发程序都可以使用Docker快速的搭建。

       问题?

       作为网络安全人员、开发者为什么要学习Docker?这就是我们接下来要学习的关于Docker的第2个小知识点——Docker的特点。

2、Docker的特点

        方便、快捷、易维护

①、为什么我们渗透测试工程师需要学习Docker?

        大家知道,目前时代已经进入到云计算时代。像我们常常就听说到腾讯云、阿里云、华为云、谷歌云、亚马逊云......都在蓬勃发展。 Docker目前在云计算市场的领先地位日益稳固,云计算时代;另外各大基础设施纷纷上云,各大党政机关国企上政务云、银行上金融云、各个大学上教育云...... 云安全技术是网络安全的未来,未来想成为高级渗透测试工程师云渗透是渗透岗位必须的技能。所以基于各种云的发展,Docker是我们渗透测试岗位必须要掌握的一项技能。

②、为什么说Docker方便、快捷?

        我们想象一下正常一个网站的开发可能用到的以下一些技术(计算机专业的学生应该熟悉下面这些名词):

        前端:bootstrap

        后端:laravel

        数据库:MySQL

在这里给大家普及个知识点:

        在公司中,开发一套系统。可能需要两套环境:

                测试环境(开发环境):不公开

                生产环境:公开

        此时在一家公司里面,假如用到上面三种技术,并且搭建上面的两套环境是比较困难的:

        首先得搭建满足Vue框架的一些依赖,比如Node、npm、bootstrap的依赖以及选择bootstrap的版本,这个过程比较困难、非常繁琐,因为不同的版本可能对其他技术的兼容性不友好,可能就会使得网站的运行效率不高、甚至出现bug;

        其次,还得为开发环境、测试环境安装、配置后端技术软件,比如上面的laravel我们知道它是一个基于php的非常流行的组件,如果想要安装laravel,我们得为我们的系统安装适当的php这个过程也是非常的繁琐;

        最后,安装、配置数据库也一样。

        这里只是测试环境、开发环境;等到项目开发完成,后期给客户安装软件的时候到了生产环境又得将开发、测试环境的整个流程再走一遍,导致整个安装配置过程占用大量时间、调试起来也非常麻烦。作为我们,不想这么麻烦怎么办?

        此时Docker技术应运而生。如果使用Docker技术搭建上面网站,前端的bootstrap是一个应用程序,我们使用Docker只需要花费很少的时间就可以将其搭建起来;后端laravel和数据库MySQL也只需要搭建三个Docker,然后将它们融合起来就可以形成我们的测试、开发环境;在生产环境我们只需要将Docker打包复制一份就可以快速搭建。另外Docker非常的安全,因为是隔离的如同虚拟机一样。有了Docker技术,一个公司想搭建一套开发环境可能只需要几分钟时间。

3、Docker与虚拟机区别

        Docker和虚拟机非常相似,它两都是隔离化的。看上面两张图,左边是虚拟机的运行原理图、右边是Docker的运行原理图。

        从上图中,我们可以看出Docker不需要HyperVisor(虚拟化)的支持直接,就能安装在系统之上,而虚拟机需要物理电脑支持HyperVisor;

        虚拟机安装系统,是先要安装虚拟机软件,然后再安装一个一个系统,这个过程比较漫长;

        而Docker只需要安装Docker软件开启Docker服务之后,在开启其它应用程序,比如上图中的Container1、Container2、Container3......这些应用只需要一些简单的libs(库文件)和BINS(依赖文件)就可以运行起来这个过程非常快捷,我们后面安装之后大家就知道了。

        从上面图中,我们还可以看出Docker和VM比起来少了OS这一层,这直接使得我们的Docker运行效率更高、占用资源更少。而VM有了OS,这将会使得所安装的系统可能会因为驱动等等使得在其中运行应用程序不成功或者出现兼容问题。而我们的Docker不会出现这些问题,因为Docker是与主机公用各种硬件环境以及驱动的,可以共享使用你的主机硬件资源。

二、Docker安装

        Docker平台支持Windows、Linux和macOS操作系统,在Linux系统中兼容性最好,操作最方便。

1、安装命令

        我们这里将以Kali(需要root用户权限,Kali系统中安装软件需要管理员root权限)中安装和使用Docker进行学习,具体安装使用以下命令:

        #apt install docker.io

        具体安装过程如下图所示界面,说明Docker的安装源还没有配置,此时我们需要先配置docker的安装源(为什么需要配置安装源,由于docker是国外网站......不多说了):

小知识:

        apt是Kali、Ubuntu、Debian系统中的自带软件包管理工具;CentOS、Redhat Linux中的软件包管理工具是yum。

2、apt换源(配置docker安装源)

        为什么换源,还是那句话?apt的官方源在国外,而国外的有些网站我们无法访问或者访问很慢,而我们使用apt命令安装软件需要apt访问源服务器,所以我们得先换源!

这里我们选用阿里提供的apt安装源:

        deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib

        deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib

具体操作步骤如下:

        使用vim或者Kali中的mousepad命令打开:/etc/apt/sources.list文件,如下图所示:

        回车之后打开如下图所示文件:

        将上图中的内容全部删掉,将前面的ali的apt源复制进去,保存退出,如下图所示:

3、更新apt应用列表(这步很重要)

        #apt update

        具体过程如下图所示(这里注意一定不要看网上说的使用#apt upgrade命令,否则你会被坑,因为该命令是升级包括Kali的内核等等一切,等你升级完成之后再使用Kali可能会报各种各样的错误):

4、安装应用(docker)

        #apt install 软件的名字

        这里我们使用#apt install docker.io安装我们的docker

小知识:

        此时我们可以使用apt命令安装你所需要的任何其它软件,比如Python、jdk等等。

        假如你不知道你要安装的软件的命令,你可以使用#apt search 软件包名字进行查询。

三、Docker使用

安装完docker之后,后续执行docker的任意操作时报如下图所示错误,都是因为docker服务器没有启动:

  1. 1、启动docker服务

                #systemctl start docker

        2、关闭docker服务

                #systemctl stop docker.socket

                #systemctl stop docker.service

        3、docker中的两大概念

        (1)、镜像-images

                应用程序的静态文件,类似虚拟机的系统镜像

        (2)、容器-container

                运行状态的应用程序,类似安装好的虚拟机

        (3)、查看镜像和容器命令

                默认情况下,镜像与容器都是空的,可以使用如下命令进行查看:

                查看镜像:#docker images

                查看容器:#docker ps -a

                如下图所示:

4、docker基本操作      

  (1)docker基本操作-下载镜像

         关于docker的操作就三种:build、share、run,下载使用的是Docker的share功能(传送、分享)。

           ①、下载命令

                命令语法:

                        #docker pull 镜像名称

                比如我们下载一个名为alpine的镜像:

                        #docker pull alpine

      alpine是一个大小仅为5Mb的镜像(具体alpine是什么,大家可以参考如下链接:Docker基础镜像环境Alpine - 简书

        这里我们下载镜像的时候可能会非常慢或者出现如下图所示错误:

        这里还是由于docker的镜像网站(该网站保存了所有的公开的docker镜像,如下图所示alpine就保存在其中):https://hub.docker.com/ 在国外(默认在境内网络环境是无法访问的)。

        这里我们想解决能访问https://hub.docker.com/ 问题,有两种方法:①、科学上网(这里不能说);

②、修改境内镜像源(docker加速器)

        现在绝大部分加速器已经关闭或者仅供内部使用。

        这里推荐使用阿里云镜像加速器,加速器的地址时根据自己的阿里云账户分配的,每个人的都不相同。

具体操作步骤如下:

a、登录阿里云官网

        首先打开阿里云的官网,如下图所示:

        在其中点击“控制台”登录自己的阿里云账号(支付宝、淘宝都可以登录),如下图所示:

        登录后界面如下图所示:

b、选择“容器镜像服务ACR”

        点击左边三条横线弹出如下图所示界面,接着单击“产品与服务”,在搜索框中搜索“容器”,点击下面找到的“容器镜像服务ACR”:

        接着上面步骤,弹出如下图所示界面:

c、查看自己的阿里云镜像加速器

        接着点击“镜像工具”—>“镜像加速器”就可以看到自己独一无二的阿里云镜像加速器地址了,如下图所示:

        此时,我们就可以为我们的Kali配置我们的加速器了,具体操作如下:复制上图中“配置镜像加速器”下面的代码:

        {

                "registry-mirrors": ["https://xxxxxxxxxx.mirror.aliyuncs.com"]

        }

d、Kali中配置自己的加速器

        接着回到Kali中使用mousepad打开/etc/docker/daemon.json文件,将上面内容复制到该文件中如下图所示:

e、重启docker

        接着保存并关闭该文件。此时我们的加速器就配置完成了,此时想让我们的docker识别加速器得使用#systemctl restart docker重启我们的docker,如下图所示:

f、查看是否成功使用加速器

        这里我们可以使用#docker info命令确认我们的加速器是否成功,由于回显内容较多,我们这里只截取部分内容,如下图所示有红框中内容表示我们的加速器成功加载:

        此时我们就可以愉快的下载我们的docker镜像了。

③、下载镜像测试
 a、测试1:alpine

         这时我们再使用#docker pull alpine下载alpine镜像如下图所示:

b、测试2:dvwa

        我们这里再以下载dvwa(命令:#docker pull sagikazarmark/dvwa官网有提供,只需要复制过来[前提是能够访问该网站])镜像为例给我们举例,命令如下图所示:

        我们有了docker后面就不需要再专门下载dvwa源码和php搭建我们的dvwa靶场了,这给我们的渗透测试的学习带来了极大的方便(后面再讲docker下dvwa和其它靶场具体使用)。

        至于dvwa的镜像名为什么是sagikazarmark/dvwa是因为在https://hub.docker.com 官网中dvwa的名字是它,可以访问该网站的同学自己可以在官网上进行搜索(这里不再赘述)。

        从上图中我们可以看到我们的sagikazarmark/dvwa这个镜像已经下载下来了,这里我们使用#docker images查看一下该镜像大小为359MB,如下图所示:

 (2)、docker基本操作-运行镜像       

        运行镜像(把镜像安装成容器)

        这里我们以上面下载的sagikazarmark/dvwa镜像为例进行镜像安装。

①、语法命令:

        #docker run -dit --name=dvwa -p 10000:80 sagikazarmark/dvwa

        说明:

                docker run:安装镜像;

                -dit:表示放在后台运行;

                --name=dvwa:给我们这个容器起个名字叫dvwa;

               -p 10000:80:表示运行的端口。由于dvwa是一个web程序默认端口为80,这里10000:80表示将80(不能改)端口映射到10000(可以修改为你想要的端口号)端口上;

                sagikazarmark/dvwa:为你刚才下载的镜像名。

②、安装

        具体安装如下图所示:

③、测试访问

        此时我们的dvwa容器就安装成功了!此时我们通过Kali自带的浏览器访问:127.0.0.1:10000就可以访问我们的dvwa了,如下图所示:

④、安装sqli-labs

        这里假如我们想使用sqli-labs靶场了,该怎么使用docker进行安装呢?也非常简单!步骤如下:

a、查找sqli-labs的镜像名

        在hub.docker.com(能访问的前提,不能访问的自行在百度等搜索引擎搜素sqli-labs的docker镜像名)查找sqli-labs的镜像名如下图所示:

        点击进去,如下图所示:

b、下载sqli-labs镜像

        点击上图中的copy安装复制安装命令,然后到我们的Kali中将该命令复制进来,如下图所示:

        回车进行下载,如下图所示表示下载完成(下载快慢取决于你的网速):

        此时使用#docker images命令查看多了一个镜像,如下图所示:

c、将sqli-labs镜像安装成容器

        使用命令:#docker run -dit --name=sqli-labs -p 10001:80 acgpiano/sqli-labs将其安装成容器,如下图所示表示安装成功:

d、访问测试

        在Kali中用自带的火狐浏览器访问:127.0.0.1:10001回车之后如下图所示:

        至此我们可以安装我们想要的任何在hub.docker.com上存在的应用了。

(3)、docker基本操作-关闭容器

        我们如果不想使用某个容器了,该如何将其进行关闭呢?可以使用命令(这里以关闭刚刚安装的dvwa为例):#docker stop dvwa将dvwa容器进行关闭(关闭过程需要一点儿时间)。如下图所示:

        ​此时我们在浏览器中再访问:127.0.0.1:10000发现dvwa网站不能正常访问,表示我们的dvwa容器已经成功关闭,如下图所示:

(4)、docker基本操作-开启容器

        我们想再次开启某个容器,可以使用如下命令进行开启(以刚刚关闭的dvwa为例):#docker start dvwa,如下图所示表示开启成功:

​        此时我们在浏览器中再次访问:127.0.0.1:10000,发现dvwa又能正常访问了,如下图所示:

(5)、docker基本操作-容器管理

        容器就如同一个虚拟机,可以进行开机(start)关机(stop)、重启(restart),也可以进行删除(rm),同时也能对其进行操控(exec)。

①、进入到容器的命令行界面:

        语法:#docker exec -it 容器名 bash,这里我们以进入到dvwa的命令(#docker exec -it dvwa bash)行为例进行演示,如下图所示:

​        其中命令中的-it表示要进入到哪一个参数,bash表示运行为命令行shell。

小知识:

        正常情况下是没有人进入到容器里面的,因为一个镜像是原作者已经配置好了的,我们需要进行使用就行了。但是docker提供了进入容器中的功能,我们在碰到容器出现问题的时候可以进入其中对其进行修改。

②、退出容器

        直接使用exit命令就可以退出当前已进入的容器,如下图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值