防火墙阻止了从docker容器到外部的网络连接

对我来说,这是一个非常标准的设置,我有一台ubuntu机器运行docker和ufw作为我的防火墙 .

如果我的防火墙启用,则docker实例无法连接到外部

$ docker exec -it nacos /bin/sh // 进入nacos容器中
WARNING:  Docker detected local DNS server on resolv.conf. Using default external servers: [8.8.8.8 8.8.4.4]
nacos@d300c5f17207:/# ping 172.30.18.47 // 尝试ping通mysql的容器的IP,ufw开放了是可以ping通的
nacos@d300c5f17207:/# curl 172.30.18.47:3306 // 尝试访问mysql,不通,导致nacos使用mysql持久化连接不上mysql,他们两个在一个networks下面
0% [Connecting to archive.ubuntu.com]
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/precise/InRelease
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/precise/Release.gpg  Temporary failure resolving 'archive.ubuntu.com'
W: Some index files failed to download. They have been ignored, or old ones used instead.

docker-compose-mysql.yml

version: '3'
services:mysql:image: hub.commchina.net/library/mysql:5.7container_name: mysqlports:- "3306:3306"volumes:- ./mysql/data:/var/lib/mysql- ./mysql/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.denvironment:- TZ=Asia/Shanghaienv_file:- "./env/mysql.env"restart: alwaysnetworks:- vcc-netlogging:options:max-size: '10m'max-file: '1'networks:vcc-net:external: true

docker-compose-nacos.yml

version: "3"
services:nacos:image: hub.commchina.net/shield/nacos-server:2.0.0container_name: nacosenv_file:- ./env/nacos-standlone-mysql.envvolumes:- ./log/nacos/:/home/nacos/logs- ./nacos/init.d/custom.properties:/home/nacos/init.d/custom.propertiesports:- "8848:8848"- "9848:9848"restart: alwaysnetworks: - vcc-netnetworks:vcc-net:external: true

这是ufw日志,显示来自docker容器的阻塞连接 .

$ sudo tail /var/log/ufw.log
Jun 30 15:41:56 localhost kernel: [61609.503199] [UFW BLOCK] IN=testbr0 OUT=eth0 PHYSIN=veth8Rj8Nh MAC=fe:ff:ed:42:b0:01:0a:7c:42:7c:a6:72:08:00 SRC=172.16.42.2 DST=8.8.8.8 LEN=64 TOS=0x00 PREC=0x00 TTL=63 ID=14886 DF PROTO=UDP SPT=60192 DPT=53 LEN=44
Jun 30 15:42:01 localhost kernel: [61614.500867] [UFW BLOCK] IN=testbr0 OUT=eth0 PHYSIN=veth8Rj8Nh MAC=fe:ff:ed:42:b0:01:0a:7c:42:7c:a6:72:08:00 SRC=172.16.42.2 DST=8.8.4.4 LEN=64 TOS=0x00 PREC=0x00 TTL=63 ID=16137 DF PROTO=UDP SPT=44812 DPT=53 LEN=44
Jun 30 15:42:06 localhost kernel: [61619.498516] [UFW BLOCK] IN=testbr0 OUT=eth0 PHYSIN=veth8Rj8Nh MAC=fe:ff:ed:42:b0:01:0a:7c:42:7c:a6:72:08:00 SRC=172.16.42.2 DST=8.8.8.8 LEN=64 TOS=0x00 PREC=0x00 TTL=63 ID=14887 DF PROTO=UDP SPT=60192 DPT=53 LEN=44

我曾尝试使用ip添加规则 .

$ sudo ufw allow in from 172.16.42.2
$ sudo ufw allow out from 172.16.42.2
$ sudo ufw allow from 124.204.33.178 to any port 3306    // 开放3306端口给外部访问

并且没有变化仍然被阻止 .

我怎样才能通过ufw规则允许从容器到外部的所有连接?

1、也许这是由于当前版本,但目前的答案不适用于我的系统(Docker 0.7.2与基础Ubuntu映像) .

The solution is explained here in the official Docker documentation.

对于懒惰的人:

  • 编辑 /etc/default/ufwDEFAULT_FORWARD_POLICY 的值更改为 "ACCEPT"
  • 使用 [sudo] ufw reload 重新加载 .

这可以确保您将流量转发到Docker的桥接网络(就我目前对这些事情的理解而言…) .小编问题得以解决

2、如上面方式不可行,继续try使用下面这种

这为我修好了:

ufw allow in on docker0

防火墙阻止了从docker容器到外部的网络连接相关推荐

  1. docker容器的四种网络模式

    容器的四种网络模式 docker容器的四种网络模式:bridge 桥接模式.host 模式.container 模式和 none 模式 启动容器时可以使用 –net 参数指定,默认是桥接模式. 以下是 ...

  2. Docker ❀ 容器内部/外部通信、端口映射、网络模式、自定义容器网络

    文章目录 1.网络通讯 命名空间类型 2.网络模式 Docker服务默认存在四组网络模式 3.端口映射 -p : 容器指定端口映射为本地随机端口: -p : 容器指定端口映射为本地指定端口: -p : ...

  3. Docker容器运行GUI程序的方法(直接进入Docker容器运行或通过SSH连接Docker容器运行)

    以下两种方法都需要先在主机执行 xhost + 命令,若无该命令,先apt安装 x11-xserver-utils 后再执行,否则会报 No protocol specified 这个错 sudo a ...

  4. Rancher Docker容器管理CPU/内存/网络/IO监控面板

  5. 【Docker】容器的几种网络模式

    当你使用Docker时,你会发现需要了解很多关于网络的知识.Docker作为目前最火的轻量级容器引擎,因此,我们有必要深入了解Docker的网络知识,以满足更高的网络需求.本文介绍了Docker的4种 ...

  6. Kubernetes Docker 容器网络终极之战(十四)

    与 Docker 默认的网络模型不同,Kubernetes 形成了一套自己的网络模型,该网络模型更加适应传统的网络模式,应用能够平滑的从非容器环境迁移到 Kubernetes 环境中. 自从 Dock ...

  7. docker登录mysql数据库_从docker容器连接到远程MySQL数据库

    我正在努力将一个Django 1.5.x应用程序容器化,该应用程序通过ODBC连接到单独服务器上的 MySQL数据库: [mysql_default] database = DB_NAME drive ...

  8. Docker容器无法解析域名

    文章目录 问题 检查docker的DNS服务器 检查宿主机是否开启转发功能 检查防火墙设置 问题 在docker容器内ping ip地址能通,但是ping域名的时候报错 检查docker的DNS服务器 ...

  9. Docker容器化开发

    目录 1.初识Docker 1.1.Docker概念 1.2.安装Docker 1.3.docker架构 3.docker命令 3.1.进程相关命令 3.2.镜像相关命令 3.3.容器相关命令 4.D ...

最新文章

  1. 文件数据分析制作过程【1】
  2. 《精通Python设计模式》学习结构型之享元模式
  3. 在三台Redis节点上部署哨兵集群以及主备切换、故障恢复的容灾演练中哨兵各自的日志信息、状态查看分析
  4. python3 selenium_Python3+Selenium3自动化测试-(准备)
  5. 【现代程序设计】【homework-07】
  6. 企业类库 add access 2007
  7. JavaScript是什么?JavaScript简介
  8. 你的袜子还是干的吗?
  9. (转)AssetBundle系列——共享资源打包/依赖资源打包
  10. oracle dba 连不上,Oracle10g的DBA无法登录解决方案
  11. Centos6.X 安装MongoDb
  12. 树和森林(Tree and Forest)
  13. JAVA王思聪吃热狗程序_王思聪吃热狗小游戏, 程序员开发路上
  14. jquery weui 显示loading
  15. 国家队上场——国家测绘局网络地图网站评测
  16. c语言关键字之auto
  17. 虚拟实验工场大学计算机报告,模拟工厂实习报告
  18. 嵌入式分享合集112
  19. c语言海明校验码编码,海明校验码的编码规则有哪些?
  20. Oracle 基本操作

热门文章

  1. python计算平均绩点_【python】以五分制绩点为基础的绩点计算器,可计算学分加权平均...
  2. 大数据处理基本思想——分治法
  3. 随机读写 vs 顺序读写
  4. C语言-函数-学会方程你的数学能力会乘风破浪突飞猛进-学会函数你的编程能力将百尺竿头更进一步
  5. 西北农林科技大学考研计算机大纲,2021年西北农林科技大学考研真题大纲参考书目...
  6. vue2.0,3.0官网
  7. Keepserver 与 IFIX OPC PowerTool相互关联
  8. Python如何判断一个数据的小数点后面首个非零数字位于小数点后面第几位
  9. 阿里双十一大促,技术准备只做了这两件事情?
  10. 安全态势攻防赛事可视化,助力网络安全发展