新的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。