Docker
与运维部署有关的技术
初识Docker
写好的代码要接触三个环境:
- 开发环境
- 测试环境
- 生产环境
由于代码在不同的环境下运行,就会出问题。(原因:水土不服)
解决方法:把环境和代码一起发给别人。
容器:环境加代码
Docker:是一个开源的应用容器引擎。可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上。
安装Docker
参考https://docker.easydoc.net/
Docker架构
Docker 包括三个基本概念:
- 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
- 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。
容器与镜像的关系类似于面向对象编程中的对象与类。
Docker的命令
Docker容器的使用
Docker 容器使用 | 菜鸟教程 (runoob.com)
|
|
利用Docker出pwn题
在ubuntu配置docker的环境
|
|
|
|
ctf_xinetd与pwn_deploy_chroot项目
ctf_xinetd项目
git clone https://github.com/Eadom/ctf_xinetd
-
把题目可执行文件和flag放在ctf_xinetd/bin中 ps:不要把 bin 作为题目的名字
-
修改ctf.xinetd文件 回到ctf_xinetd目录下,修改ctf.xinetd 把图片箭头指向的 helloworld 改成bin文件夹中题目的名字 保存退出
-
Build 在ctf_xinetd目录下 .
1
sudo docker build -t "pwn"
-
Run 在ctf_xinetd目录下
1
sudo docker run -d -p "0.0.0.0:pub_port:9999" -h "pwn" --name="pwn" pwn
-h:指定容器的hostname pub_port:改成你想放置的端口号,建议如8001,8002…等
此时输入docker ps 会发现题目容器已经启动了,可以nc 0.0.0.0 pub_port进行测试一下(pub_port:改成你想放置的端口号)
pwn_deploy_chroot项目:
当需要部署多道题时,可以采用该项目,一次部署!
|
|
pwn出题
|
|