笔记--docker(容器)

什么是docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

当然,以上官方描述可能让人觉得一头雾水,似懂非懂。特别是对于没有太多计算机知识的小白,可能每个字都认识,但连在一起就是读不懂。

我们从容器说起,以一个CTFer的视角,介绍一下docker的简单使用

容器

容器就是在隔离的环境运行的一个进程,如果进程停止,容器就会销毁。

例如,当我们在攻防世界等平台刷题的时候,经常能看到下面这个按钮

点击这个按钮,就会在服务端启动一个容器,并且返回给我们容器地址

因为容器在隔离的环境中运行,所以我们在容器里瞎折腾不会影响到服务器(如果直接在服务器中架设带有漏洞的网页,攻击者就能把服务器拿下了)

而docker就是我们创建容器的工具

Docker安装(windows)

考虑到很多新手小白可能没有linux使用经验,这里介绍一下windows的docker安装使用方法

首先,前往官网的Install Docker Desktop on Windows界面

https://docs.docker.com/desktop/windows/install/

下载完成后打开exe,一路next完成安装(安装完成后可能会要求重启)

可以通过win+R打开cmd,输入docker -v来查看docker是否安装成功

弹出docker版本表示安装成功

使用方法举例

首先感谢LLeaves学长提供的题目easyPhp

在命令行输入docker pull registry.cn-beijing.aliyuncs.com/ibuki/ibukifalling:lastest

该命令的意思是让dokcer拉取对应镜像(这个镜像是我提前放到网上的,镜像文件可能比较大,拉取时间比较长的话可以喝杯茶放松一下)

拉取完成以后双击右下角任务栏的小鲸鱼

在image里已经能看到我们拉取的镜像了,接下来我们点击RUN,用这个镜像创建一个容器

填一下容器名称和端口(Ports),这里我填的是10086端口

容器run起来之后呢,打开浏览器,在地址栏输入127.0.0.1:[端口号]就能访问了

当然,你也可以使用ipconfig命令查看本机ip,然后通过这个ip来访问(我实测的时候发现burpsuite抓不到127.0.0.1的包)

同样可以访问

后话

当然,docker还有其他很多用法,有兴趣的同学可以上网搜索一些教程(推荐docker官方文档

例子中出现的题目是去年TSCTF-J未放出的web题,对web方向有兴趣的新同学可以挑战一下

CTF(或者说网安乃至所有计算机相关专业)的学习模式可能会让一些新同学无所适从——不再像高中一样有保姆级的手把手教学,不会的东西要自己去搜自己去学,甚至悲惨到连题目环境都要自己搭。

但不妨转念想想,自己动手也是对实践能力的极好锻炼——而且这个过程本身就是非常有乐趣的。相信各位爱好技术的新同学一定能开拓属于自己的一片天地,加油