容器中使用iptables报错can't initialize iptables table Permission denied (you must be root)

云计算 waitig 773℃ 百度已收录 0评论

背景

  在docker容器中部署了一微服务,该服务需要docker push镜像到docker registry。因此,docker容器中需要安装docker服务。但在启动容器的时候,却报错:

can't initialize iptables table `filter': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.

原因    

  在容器中部署docker服务,而docker服务又会使用到iptables,因此在启动容器时,也会同时启动容器内的iptables。但iptables必须工作在容器的privileged模式下,否则就会如上报错。

解决方法

  在启动容器时加上对应的privileged参数。

docker中启动容器

docker run -privileged [imageName]

Marathon中启动容器

{
  ...
  "instances": 1,
  "container": {
    "type": "DOCKER",
    "volumes": [],
    "docker": {
      "image": "imageName",
      "network": "BRIDGE", 
      "privileged": true,
      "parameters": [],
    }
  }
  ...
}

本文由【waitig】发表在等英博客
本文固定链接:容器中使用iptables报错can't initialize iptables table Permission denied (you must be root)
欢迎关注本站官方公众号,每日都有干货分享!
等英博客官方公众号
点赞 (0)分享 (0)