在运行第三方服务容器的时候,通常需要绑定端口到主机,从而实现从主机访问容器,但是由于docker会跳过UFW操作iptables规则在防火墙上打洞,所以很难进行安全控制和管理。其实有一个方法可以让docker不自动创建防火墙规则。
这里以创建Cloud Torrent容器为例
官方创建容器的命令如下
1 |
docker run --name ct -d -p 63000:63000 --restart always -v /root/downloads:/downloads jpillora/cloud-torrent --port 63000 --auth user:pass |
其中 -p 63000:63000 命令就会使docker在主机的防火墙上打开63000端口。而我们如果只需要通过反向代理访问容器,那么可以更改命令如下
1 |
docker run --name ct -d --expose=63000 --restart always -v /root/downloads:/downloads jpillora/cloud-torrent --port 63000 --auth user:pass |
将其中的 -p 63000:63000 命令改为 --expose=63000 ,表示只在容器上暴露端口,而不绑定到主机。
之后,通过 docker inspect <container id> 查询容器IP,再配置反向代理到容器IP:63000即可。
这样就可以避免在主机上开放端口,避免因为公开了第三方容器的端口而引发安全性问题。
There are no comments yet