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

国内加速地址有:

  • Docker中国区官方镜像 registry.docker-cn.com

    网易 hub-mirror.c.163.com

    ustc docker.mirrors.ustc.edu.cn

    中国科技大学 docker.mirrors.ustc.edu.cn

    阿里云容器镜像服务 cr.console.aliyun.com/

首页点击“创建我的容器镜像” 得到一个专属的镜像加速地址,类似于“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 端口映射规则就会被重新自动创建出来

推荐 收藏
评论(0) 阅读(341)
刷新评论 返回顶部
星月相随最新博客