新的docker集装箱为每个用户

我正在构build一个“hackme”挑战。 用户可以进入网站,获得root权限。

我在docker集装箱做了这个,以防止用户伤害主机或其他游戏(容器)。

我不能只是将其redirect到每个用户的不同端口,因为用户可以端口扫描服务器并find不同的容器。

我想要的是http://example.com/challange1/A1B2C3是“A1B2C3”是他们自己的容器的唯一标识符。

有人能告诉我如何做到这一点?

有了nginx,你可以做下面的事情 – 你可以像下面这样重写给定path的请求: https : //gist.github.com/soheilhy/8b94347ff8336d971ad0#step-7—-rewriting-requests

这里的名字是现有的运行容器。

server { listen ...; ... location /a1b2c3 { proxy_pass http://a1b2c3:8080; } location /a2b1c4 { proxy_pass http://a2b1c4:8080; } ... } 

我会和Jwilder / Nginx一起去完成这个任务。 只需用“随机”子域启动不同的容器。

启动Nginx / Jwilder

 docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy 

启动您的容器

  for i in {1..5} do docker run -e VIRTUAL_HOST=foo-$i.bar.com mycontainer done 

Jwilder / Nginx将在每个启动的容器上更新,并将注册新的VHOST。