在Docker容器中使用iptables時的最小權限的開啟方法
Dcoker容器在使用的過程中,有的時候是需要使用在容器中使用iptables進行啟動的,默認的docker run時都是以普通方式啟動的,沒有使用iptables的權限,那么怎樣才能在容器中使用iptables呢?要如何開啟權限呢?
那么在docker進行run的時候如何將此容器的權限進行配置呢?主要是使用--privileged或--cap-add、--cap-drop來對容器本身的能力的開放或限制。以下將舉例來進行說明:
例如:
有一個image為aaa的將啟動為容器名為bbb的且在容器內需要使用iptables功能,可以使用--privileged=true來進行開啟,如:
~$ docker run --privileged=true -d -p 4489:4489/tcp --name bbb aaa
執行以上的命令后,可以進入容器中進行iptables的配置:
~$ docker exec -it cg_openvpn /bin/bash~#iptables -A INPUT -s 192.168.1.156 -j DROP/# iptables -nvL Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 DROP all -- * * 192.168.1.156 0.0.0.0/0
但是這樣的話就將系統的所有能力都開放給了docker容器,這是一種對宿主機非常不安全的做法,例如:可以直接對宿主機中的設備等進行操作。對于iptables需要的權限進行開放,而對于其它的權限不予開放,那么在啟動docker的時候使用如下的命令參數進行限制權限的過度開放:
~$ docker run--cap-add NET_ADMIN --cap-add NET_RAW -d -p 4489:4489/tcp --name bbb aaa
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答
圖片精選