docker宿主机和容器之间网络通讯

本文介绍如何解决Docker环境下容器间及容器与宿主机之间的网络访问问题,包括使用host.docker.internal进行容器到宿主机的访问、配置docker-connector实现宿主机到容器的访问等实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

宿主机mac
容器网络类型 bridge

本地使用docker搭建一些demo的时候经常遇到一些问题,统一记录一下解决方法

docker启动两个服务A和B
宿主机有一个服务C
在这里插入图片描述

容器访问宿主机

docker内置了 host.docker.internal,

比如A要访问宿主机的mysql

jdbc:mysql://host.docker.internal:3306/seata??serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8

宿主机访问容器

1. 通过容器内暴露的端口来访问

2. ip地址访问容器

通过端口访问可以解决一部分问题,可有些时候需要根据ip地址访问容器,记录一下步骤

  1. 安装 docker-connector
 brew install wenjunxiao/brew/docker-connector	
  1. 修改 /usr/local/etc/docker-connector.conf
# addr 192.168.251.1/24
# mtu 1400
# host 127.0.0.1
# port 2511
# 这里后面28可以根据需要调整,本地跑的服务不多,就设置的比较大,
# 其实就是配置代理范范围,避免误伤,方位设置的小一点
 route 172.17.0.0/28
# route 172.18.0.0/16
# iptables 172.17.0.0+172.18.0.0
# hosts /etc/hosts .local
# proxy 127.0.0.1:80:80

  1. 配置完成,直接启动服务
sudo brew services start docker-connector
  1. 使用一下命令在docker 端运行 wenjunxiao/mac-docker-connector
docker run -it -d --restart always --net host --cap-add NET_ADMIN --name connector wenjunxiao/mac-docker-connector

容器内部访问(A <~~~~> B)

  1. 使用 --link
  2. 使用 host.docker.internal 访问其他容器暴露在宿主机的端口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tcoding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值