关于Mac宿主机无法ping通Docker容器的问题

https://www.cnblogs.com/luo-c/p/15830769.html

1.首先 Mac 端通过 brew 安装 docker-connector

brew install wenjunxiao/brew/docker-connector

2.手动修改 /usr/local/etc/docker-connector.conf 文件中的路由(也可使用博客中的命令自动配置):

3.配置完成,直接启动服务(需要 sudo,路由配置启动之后仍然可以修改,并且无需重启服务立即生效),需要输入本机密码

sudo brew services start docker-connector

4.使用一下命令在docker 端运行 wenjunxiao/mac-docker-connector

docker run -it -d --restart always --net host --cap-add NET_ADMIN --name connector wenjunxiao/mac-docker-connector

5.安装完成,重试ping 操作

 由上图可见,ping通了,如果 ping不通,重启一下电脑再试一下(前提是 ping的目标地址所在的容器,已经启动了,可以使用 docker ps查看运行着的容器)。

### 配置 Docker 使用 VLAN 子网 为了使 Docker 容器能够使用特定的 VLAN 子网并实现网络隔离以及 IP 地址分配,可以过 `macvlan` 或者更具体的 `ipvlan` 网络驱动来完成这一目标。下面介绍基于 `macvlan` 的方法。 当创建带有 `macvlan` 类型的新 Docker 网络时,需指明所使用的物理接口作为父接口,并定义子网范围、默认网关以及其他必要的参数[^1]。对于希望关联至某个具体 VLAN ID 的情况,则可以在宿主机上预先配置好支持该 VLAN 的物理网口或虚拟网口,之后再利用此已配置好的接口名称作为 `-o parent=` 参数值传递给 `docker network create` 命令。 #### 创建 MACVLAN 网络实例 假设有一个名为 `eth0` 的物理网卡连接到了交换机端口,而这个端口被设置成了 trunk 模式允许多个 VLAN 流量过;现在想要让某些容器加入到 VLAN 10 中去: ```bash # 在宿主机操作系统层面先建立一个属于 VLAN 10 的辅助接口 eth0.10 (这里以 CentOS/RHEL为例) sudo ip link add link eth0 name eth0.10 type vlan id 10 sudo ip addr add 192.168.10.1/24 dev eth0.10 sudo ip link set up dev eth0.10 # 接下来就可以用新创建出来的 eth0.10 来构建 macvlan 网络了 docker network create -d macvlan \ --subnet=192.168.10.0/24 \ --gateway=192.168.10.1 \ -o parent=eth0.10 \ my_vlan_10_network ``` 上述操作完成后,在启动新的 Docker 容器的时候只需将其挂载到刚刚创建成功的 `my_vlan_10_network` 上即可自动获取来自 VLAN 10 的 IP 地址资源[^3]。 #### 启动容器并验证连性 ```bash docker run -it --rm --network=my_vlan_10_network alpine ash -c "apk update && apk add iputils; ping google.com" ``` 这会拉取 Alpine Linux 镜像运行临时容器测试其能否正常解析域名并与外部信,同时也证明了容器确实获得了正确的路由表项从而能顺利访问互联网或其他内网服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值