提问人:codevb 提问时间:9/23/2023 更新时间:9/23/2023 访问量:100
我无法在容器 CENTOS - 7.9 或 ROCKYlinux 8.8 中运行 iptables
I can't run iptables inside the container CENTOS - 7.9 OR ROCKYlinux 8.8
问:
当我使用我需要的所有软件包构建它时,我在我的 ubuntu.2204 机器上下载的每个映像 centos-7 或 rocky-linux 8.7+,当我保存此映像并将其加载到另一台机器上的 docker 中时,我唯一无法运行的是 iptables 尝试运行 iptables -nL 时我收到消息:
在我的 docker 文件中,我安装了 iptables 并安装了,但在制作映像后不起作用!
# iptables -nL
iptables v1.4.21: can't initialize iptables table `filter': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
只有当我导出图像时才会出现问题,我已经尝试过 Dockerhub 的官方和非官方图像,有人可以帮我吗?
docker run -p 1555:1555/tcp -dti --restart always --name mycontainer --hostname mycontainer-net --network mynetwork --ip 172.18.0.3 --privileged custom-centos-iptables
答:
1赞
larsks
9/23/2023
#1
容器使用一组受限的权限运行。默认情况下,在容器内部,您无法更改网络配置,包括接口配置、路由和 iptables。
如果需要在容器中运行 iptables,可以使用提升的权限运行该容器。要仅授予网络配置所需的权限,请执行以下操作:
docker run --cap-add NET_ADMIN ...
要取消所有限制,请执行以下操作:
docker run --privileged ...
请注意,运行容器会消除容器和主机之间通常存在的大部分隔离。切勿使用提供远程访问服务的容器执行此操作。--privileged
评论
0赞
codevb
9/25/2023
嗨,兄弟,我在docker exec -it之后使用“--cap-add NET_ADMIN”删除并重新创建容器...iptables -nL iptables v1.4.21:无法初始化iptables table 'filter':表不存在(需要insmod吗?也许 iptables 或您的内核需要升级。
评论