我嘗試使用泊塢窗容器,其中只有特定IP地址應該可以從正在運行的容器中訪問。 iptables只能在priviliged docker容器中工作。但比用戶可以自己更改iptables。 一個不錯的想法是用dockerfile和iptables創建一個docker鏡像。但是在創建圖像時沒有特權的選項。 任何人有一個想法如何解決這個問題?限制網絡訪問但允許運行Docker容器的特定IP地址
最佳
我嘗試使用泊塢窗容器,其中只有特定IP地址應該可以從正在運行的容器中訪問。 iptables只能在priviliged docker容器中工作。但比用戶可以自己更改iptables。 一個不錯的想法是用dockerfile和iptables創建一個docker鏡像。但是在創建圖像時沒有特權的選項。 任何人有一個想法如何解決這個問題?限制網絡訪問但允許運行Docker容器的特定IP地址
最佳
每個搬運工人容器都有一個唯一的IP地址,所以如果你想允許容器地址172.17.0.21,你希望它能夠只訪問地址8.8.8.8,你可以這樣做:
iptables -A FORWARD -s 172.17.0.21 -d 8.8.8.8 -j ACCEPT
iptables -A FORWARD -s 172.17.0.21 -j REJECT --reject-with icmp-host-prohibited
也可以使用nsenter
命令來修改iptables規則內無特權的容器。例如,如果你開始一個碼頭工人的容器:
docker run --name example -d myimage
你可以這樣獲得PID是容器:
pid=$(docker inspect -f '{{.State.Pid}}' example)
然後用nsenter
到容器的網絡命名空間中運行命令:
nsenter -t $pid -n iptables ...
這些命令將運行而不是在容器內運行的命令的功能限制。
使用nsenter添加iptables規則看起來不錯。有關如何使這些規則在容器啓動時持久化/恢復的任何提示? – 2018-02-13 22:20:28
我不認爲有一個很好的方法來實現這一點。沒有太多的努力,你可以做的最好的事情就是將所有必要的命令放在一個腳本中,這樣你只需要運行一個命令就可以重新安裝一些東西。 – larsks 2018-02-15 12:29:30
在主機上(在FORWARD鏈中)創建iptables,而不是在Docker容器中。 – larsks 2015-02-09 13:07:58
但是,我如何處理不同的碼頭實例不同的IP? – user1200794 2015-02-09 13:21:43