背景
在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": [],
}
}
...
}