我想通过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