MacOS下解决宿主机和docker容器之间 络互通

docker在Mac下使用非常方便,官 提供了desktop版本的可视化软件,甚至还十分贴心地集成好了k8s套件。

然而如果想同时部署和使用多个容器,每个容器不使用127.0.0.1地址,而是各自有ip,如使用172.17.0.x 段,则需要解决从宿主机到各个容器的 络通信。

如果是使用其他Linux系统的用户则不用担心这个问题,Linxu系统会自动帮我们处理好ip之间的互通(宿主机和各个容器之间)。而Mac想要直接访问容器的ip,则需要曲线救国,通过搭建一个vpn服务,然后通过vpn再去和容器的 段互联。

经过尝试openvpn成为了最佳的解决方案,github的项目地址为:docker-openvpn-kube-for-mac
其中 络连通的原理,下图所示,openvpn作为一个转接的桥梁。

根据官 项目描述,它是可以适用于Mac下的docker和Kubernetess:

该容器(openvpn)在Docker For Mac容器和主机Mac本身之间创建VPN 络。它使您可以直接与作为在IP 172.17.0.0/16上运行的Docker容器运行的服务进行通信,还可以提供到Kubernetess Pod的直接路由以及默认情况下在 络10.1.0.0/16和10.96.0.0/16和10.101上运行的服务的直接路由.0.0 / 16

 然后依次顺序执行下列命令去创建vpn和vpn的配置。

1.初始化一个ovpn数据容器,用以保存配置文件和凭证。

2.创建CA。

3.运行vpn server。

4.创建一个不含秘钥的客户端凭证。

5.使用嵌入式证书检索客户端配置。

 上面这一步生成的DockerForMac.ovpn配置需要在Tunnelblink里面使用。Tunnelblink是一款开源免费的针对MacOS的OpenVPN图形化客户端,可以非常方便地使用openvpn配置来连接 络服务。下载地址在此:Tunnelblink下载,可以直接下载使用。

下载并安装后Tunnelblink(下载dmg包-双击安装-选择 已有 络配置),运行它,然后再到终端执行如下命令来添加 络配置:

如此这番操作,就可以直接通过宿主机去访问docker容器实例的ip了,使用ping命令也能ping通。

 

Tips:

开启Tunnelblink的dockerForMac后可能导致您的有些 页无法打开,本人环境下实测关闭Tunnelblink的DNS功能即可。

 

文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树容器(docker)安装docker8689 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年5月9日
下一篇 2021年5月9日

相关推荐