docker:有两个版本:docker-ce(社区版)和docker-ee(企业版)。javascript
参考官网地址:https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#os-requirementsjava
docker-compse:可运行和管理多个docker容器。python
docker-machine:docker官方提供的docker管理工具。可管理多个docker主机,可搭建swarm集群。linux
咱们能够从ubuntu仓库安装docker 也能够从docker仓库安装 ,这里以docker官网安装为例git
1,卸载旧版本dockergithub
全新安装时,无需执行该步骤web
$ sudo apt-get remove docker docker-engine docker.io
2,更新系统软件docker
$ sudo apt-get update
3,安装依赖包ubuntu
$ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common
4,添加官方密钥服务器
执行该命令时,如遇到长时间没有响应说明网络链接不到docker网站,须要使用代-理进行。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
显示OK,表示添加成功.
5,添加仓库
$ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
6,再次更新软件
经实践,这一步不可以省略,咱们须要再次把软件更新到最新,不然下一步有可能会报错。
$ sudo apt-get update
7,安装docker
若是想指定安装某一版本,可以使用 sudo apt-get install docker-ce=<VERSION> 命令,把<VERSION>替换为具体版本便可。
如下命令没有指定版本,默认就会安装最新版
$ sudo apt-get install docker-ce
8,查看docker版本
$ docker -v
到这里 表示docker安装成功。
两种最新的docker安装方式
1.从github上下载docker-compose二进制文件安装
$ sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ docker-compose --version
$ sudo pip install docker-compose
0x03 docker-machine安装
说明:docker-machine的使用是要基于virtualBox的。若是没有安装安装过,请先安装virtualBox。
1,安装virtualBox
登陆virtualBox官网:https://www.virtualbox.org/wiki/Linux_Downloads
找到"Ubuntu 16.04 ("Xenial") i386 | AMD64"字样,点击“AMD64”进行下载。
下载后,执行如下命令进行安装:
$ sudo dpkg -i virtualbox-5.2_5.2.0-118431_Ubuntu_xenial_amd64.deb
2,下载并安装docker-machine
$ curl -L https://github.com/docker/machine/releases/download/v0.13.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine && chmod +x /tmp/docker-machine && sudo cp /tmp/docker-machine /usr/local/bin/docker-machine
3,查看版本信息
$ docker-machine version
显示出版本信息,即安装成功。
用到的平台是Hence Zhang @Lancet师傅分享的
比赛平台拓扑:
Check_server:
服务检查服务器,用于断定选手维护的服务是否可用,若是不可用,则会扣除相应的分数。不开启任何端口。须要与flag服务器通讯。
Flag_server:
选手提交flag的服务器,并存储选手的分数。开启80端口。
Web_server:
选手链接的服务器,选手须要对其进行维护,并尝试攻击其余队伍的机器。一般开启80端口,22端口,并将端口映射到主机。
在复制文件的时候出现了没法复制的问题
解决;
sudo apt-get autoremove open-vm-tools sudo apt-get install open-vm-tools sudo apt-get install open-vm-tools-desktop
docker pull zhl2008/web_14.04
极可能是报错
解决:
第一步:经过
dig @114.114.114.114 registry-1.docker.io
找到可用IP
第二步:尝试修改/etc/hosts
强制docker.io
相关的域名解析到其它可用IP
ok
再次加载镜像
1.根据当前队伍数量copy全部的队伍的比赛文件夹: python batch.py web_dir team_number
for example:
python batch.py web_server 5
而后改下名字
docker tag zhl2008/web_14.04 web_14.04
2.启动比赛:python start.py ./ team_number
for example:
python start.py ./ 1
3.启动check脚本:
docker attach check_server
python check.py
启动的时候发现docker没起起来 爆以下错误:
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/create?name=team1: dial unix /var/run/docker.sock: connect: permission denied.
解决:
sudo运行
启动起来了就访问吧
由于是在一个服务器上运行了多个docker,靶机的映射端口规则是:
team1 ---- 8801 team3 ---- 8802 team3 ---- 8803 ....以此类推
各个靶机的ssh密码能够在项目的文件夹下的pass.txt文件中
ssh的端口规则是:
team1 ---- 2201 team2 ---- 2202 team3 ---- 2203 ....以此类推
在项目的根目录的flag_server/中,咱们 要赋予score.txt 和result.txt 777权限,不然分数变更没法进行同步
ok这里就搭建完成了 enjoy it~