我想通過Docker容器中的iptables將8080端口轉發到80。 在構建中,我有一條錯誤消息,如下所示。如何在Docker容器中向前端口?
這裏是Dockerfile:
FROM fedora
RUN whoami && \
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
這裏是輸出:
[~]# docker build -t temp /home/edfromhadria/Documents/Docker/temp/.
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 0 : FROM fedora
---> 834629358fe2
Step 1 : RUN whoami && iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
---> Running in 95046cf959bf
root
iptables v1.4.21: can't initialize iptables table `nat': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.
INFO[0001] The command [/bin/sh -c whoami && iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080] returned a non-zero code: 3
預先感謝您的任何幫助,您可以提供。
親愛的柳絮!感謝你的博覽會,我注意到了它。 -p選項適合我需要! – edfromhadria 2015-04-03 14:52:37
什麼是「只修改運行時配置」的含義?有時我需要比端口轉發更復雜的規則。 – 2015-05-28 02:27:03
@liaozd在構建過程中運行'iptables'是沒有意義的,因爲'iptables'命令修改了本地網絡名稱空間的配置,這是暫時的,在Dockerfile中處理該特定的'RUN'命令後將被丟棄。當你運行一個鏡像時,你正在用它自己的一組iptables規則創建一個新的網絡命名空間。通常,修改Docker容器內的iptables配置是做錯事情的錯誤方法。如果您還有其他問題,請在StackOverflow上打開一個新問題。 – larsks 2015-05-28 02:53:02