暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MacOS下解决宿主机和docker容器ip互通

成都有娃儿 2020-12-26
1492

docker在Mac下使用非常方便,官网提供了desktop版本的可视化软件,甚至还十分贴心地集成好了k8s套件。然而如果想同时部署和使用多个容器,每个容器不使用127.0.0.1地址,而是各自有ip,如使用172.17.0.x网段,则需要解决从宿主机到各个容器的网络通信。

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

经过尝试openvpn成为了最佳的解决方案,github的项目地址为:openvpn[1] 其中网络连通的原理,下图所示,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数据容器,用以保存配置文件和凭证。

    docker volume create --name ovpn-data
    docker run -v ovpn-data:/etc/openvpn --rm onedata/docker-openvpn-kube-for-mac:1.3.0 ovpn_genconfig -u udp://localhost

    2.创建CA。

      docker run -v ovpn-data:/etc/openvpn --rm -it onedata/docker-openvpn-kube-for-mac:1.3.0 ovpn_initpki

      3.运行vpn server。

        docker run --dns 8.8.8.8 --restart=always -v ovpn-data:/etc/openvpn --name docker-openvpn-kube-for-mac -d -p 1194:1194/udp --cap-add=NET_ADMIN onedata/docker-openvpn-kube-for-mac:1.3.0

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

          docker run -v ovpn-data:/etc/openvpn --rm -it onedata/docker-openvpn-kube-for-mac:1.3.0 easyrsa build-client-full DockerForMac nopass

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

             docker run -v ovpn-data:/etc/openvpn --rm onedata/docker-openvpn-kube-for-mac:1.3.0 ovpn_getclient DockerForMac > ~/Downloads/DockerForMac.ovpn

            上面这一步生成的DockerForMac.ovpn配置需要在Tunnelblink里面使用。Tunnelblink是一款开源免费的针对MacOS的OpenVPN图形化客户端,可以非常方便地使用openvpn配置来连接网络服务。下载地址在此:Tunnelblink[2],可以直接下载使用。下载并安装后Tunnelblink,运行它,然后再到终端执行如下命令来添加网络配置:

              open ~/Downloads/DockerForMac.ovpn

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

              References

              [1]
               openvpn: https://github.com/onedata/docker-openvpn-kube-for-mac
              [2]
               Tunnelblink: https://sourceforge.net/projects/tunnelblick/


              文章转载自成都有娃儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论