docker 容器与 iptables 映射问题

docker 容器与 iptables 映射问题

背景

首先在 docker 镜像中创建一个前端项目

  • npm install -g vue-cli 全局安装 vue-cli
  • 创建项目
    • vue create 选择手动配置
    • vue ui
  • npm run build 建立生成环境代码
  • npm run serve / npm run dev 启动webpack
    • vue serve demo.vue 单页应用启动

修改仓库源

创建或修改 /etc/docker/daemon.json 文件,修改为如下形式

vi /etc/docker/daemon.json

{
    "registry-mirrors": ["http://hub-mirror.c.163.com"]
}
复制代码

systemctl restart docker.service

国内加速地址有:

首页点击“创建我的容器镜像” 得到一个专属的镜像加速地址,类似于“1234abcd.mirror.aliyuncs.com”

异常错误

iptables –wait -t nat -I DOCKER -i br-d38d92300109 -j RETURN:iptables: No chain/target/match by that name.

原因:docker 服务启动的时候,docker 服务会向 iptables 注册一个端口映射链,以便让 docker 服务管理的 containner 容器所暴露的 端口之间映射关系进行通信

通过命令 iptables -L 可以查看 iptables 端口映射链

在开发环境中,如果你删除了 iptables 中的 docker 相关的端口映射链,或者 iptables 的网络规则会因此被丢失了(例如重启firewalld),docker就会报 iptables error异常提示。例如:

failed programming external connectivity … iptables: No chain/target/match by that name

要解决这个问题,只要重启docker服务,之后,正确的 iptables 端口映射规则就会被重新自动创建出来

指导文章

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享