当我用我需要的所有包构建它时,我在 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
容器以一组受限的权限运行。默认情况下,在容器内部,您无法更改网络配置——这包括接口配置、路由和 iptables。
如果您需要在容器中运行 iptables,您可以使用提升的权限运行该容器。仅授予网络配置所需的权限:
docker run --cap-add NET_ADMIN ...
要删除所有限制:
docker run --privileged ...
请注意,使用
--privileged
运行容器会消除容器和主机之间通常存在的大部分隔离。您永远不应该对提供远程访问服务的容器执行此操作。