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

本文介绍了解决在Docker容器内部署Docker服务时遇到的权限问题。当容器内部的服务尝试使用iptables时,会出现权限拒绝错误。文章详细解释了错误的原因,并提供了两种解决方案:一是使用docker命令行工具启动容器时加入privileged参数;二是在Marathon中配置容器的docker部分时设置privileged为true。

2663

被折叠的 条评论
为什么被折叠?



