正常的docker安装
由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本:
1 | $ sudo apt-get remove docker docker-engine docker-ce docker.io |
更新apt包索引:
1 | $ sudo apt-get update |
安装以下包以使apt可以通过HTTPS使用存储库(repository):
1 | $ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common |
添加Docker官方的GPG密钥:
1 | $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - |
使用下面的命令来设置stable存储库:
1 | $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" |
再更新一下apt包索引:
1 | $ sudo apt-get update |
安装最新版本的Docker CE:
1 | $ sudo apt-get install -y docker-ce |
启动docker
1 | sudo service docker start |
用hello world进行验证是否成功启动
1 | sudo docker run hello-world |
linux环境下pwn题的搭建
这里运用到pwn_deploy_chroot。
https://github.com/giantbranch/pwn_deploy_chroot <–这里
运用这个就可以不用上述繁琐操作,从零开始快速布置你的pwn题
环境配置
1 | # 安装docker |
记得先给docker换源!
1 | $vim /etc/docker/daemon.json |
更改镜像后重启docker
1 | #systemctl restart docker |
使用
- 将所有pwn题目放入bin目录,可以1个,也可以n个(注意名字不带特殊字符,因为会将文件名作为linux用户名)
- python initialize.py
- docker-compose up –build -d
注:
1.此时可能会在第三步因为dockerfile里面的设置问题,导致源没换成功。此时就手动修改dockerfile内容,加入
1 | RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list |
2.它会自动部署pwn题,端口默认从10000依次增加。
因为某xx要求端口是9999,所以我们要修改一下config.py,把这里的10000改成9999,然后把用的pwn放到bin里
3.要想修改flag,就在第二步python initialize.py后修改flag.txt,再运行一次python initialize.py
ok,此时pwn题已部署完毕。此时就可以到image去查看一番。
1 | #查看当前运行的容器,找到对应的CONTAINER ID后进入 |
查看容器的ip,用nc连
1 | cat /etc/hosts |
最后就是用你的exp进行测试。
docker镜像的保存和导出
1.查看要要保存的镜像的ID
docker images
2.保存镜像为tar包
docker save -o gitlab.tar
3.用scp,xftp等等将已经压缩好的gitlab.tar包弄到服务器,虚拟机(你想弄到的地方)
4.将gitlab.tar包导出到本地来(一定要有docker的运行环境,docker安装:https://www.jianshu.com/p/9c96ea8e6f41)
docker load -i gitlab.tar
5.运行docker容器
docker run
删除docker容器
1.列出所有容器
1 | docker ps |
2.停止容器
1 | docker stop <CONTAINER ID> |
3.删除容器
1 | docker rm <CONTAINER ID> |
4.删除镜像
1 | docker rmi <id|name> |
docker启动
docker images中已经存在其镜像,对其启动
1 | docker run my/python:v1 cal ##my/python:v1为镜像名和标签 |
开始容器运行
1 | docker start $CONTAINER_ID |