在Docker容器中使用iptables時的最小權限的開啟方法
Dcoker容器在使用的過程中,有的時候是需要使用在容器中使用iptables進行啟動的,默認的docker run時都是以普通方式啟動的,沒有使用iptables的權限,那么怎樣才能在容器中使用iptables呢?要如何開啟權限呢?
那么在docker進行run的時候如何將此容器的權限進行配置呢?主要是使用--privileged或--cap-add、--cap-drop來對容器本身的能力的開放或限制。以下將舉例來進行說明:
例如:
有一個image為aaa的將啟動為容器名為bbb的且在容器內需要使用iptables功能,可以使用--privileged=true來進行開啟,如:
1
|
~$ docker run --privileged= true -d -p 4489:4489 /tcp --name bbb aaa |
執行以上的命令后,可以進入容器中進行iptables的配置:
1
2
3
4
5
6
|
~$ 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的時候使用如下的命令參數進行限制權限的過度開放:
1
|
~$ docker run--cap-add NET_ADMIN --cap-add NET_RAW -d -p 4489:4489 /tcp --name bbb aaa |
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
原文鏈接:http://blog.csdn.net/yygydjkthh/article/details/50737237