前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker-1:本地开发打通宿主机与docker服务网络

docker-1:本地开发打通宿主机与docker服务网络

作者头像
千里行走
发布2022-04-28 16:03:16
1.5K0
发布2022-04-28 16:03:16
举报
文章被收录于专栏:千里行走

目录

(1).需求

(2).打通宿主机与docker服务网络

1.mac不支持docker0与windows解决方式

2.mac解决方式

3.注意事项

4.验证

(1).需求

笔者经常在本地mac本上研究一些东西,需要一个本地的开发环境,使用docker来管理环境是一个性价比非常高的做法。

笔者的痛点在于,在写java开发框架时saf时(https://github.com/saf-group

)要进行调试,需要apollo,zookeeper等各种基础设施,这些虽然都在远端的个人买的云ecs上的K8S,但是网络是不通的,每次只能code提交到github,然后在ecs上部署到k8s后调试,还没有办法debug,代价巨大。

(2).打通宿主机与docker服务网络

1.mac不支持docker0与windows解决方式

mac有一个问题,docker服务的网段和宿主机是不同的,两者通信会出现问题,而mac上更麻烦的一点是不支持docker0,没有办法这样修改后重启docker生效:

/etc/docker/daemon.json

代码语言:javascript
复制
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] ,
"bip":"192.168.0.1/16"
}

上述方法在windows上可以解决。

2.mac解决方式

使用openvpn方式,github上有一个docker-mac-network工程,可以生成打通网络的vpn文件。

Step1.

安装这个客户端vpn的客户端:tunnelblick。

Step2.

git clone https://github.com/wojas/docker-mac-network.git

Step3.

修改文件里的ip和子网掩码,改为你容器的

vim helpers/run.sh

代码语言:javascript
复制
#!/bin/sh

dest=${dest:-docker.ovpn}
 
if [ ! -f "/local/$dest" ]; then
    echo "*** REGENERATING ALL CONFIGS ***"
    set -ex
    #rm -rf /etc/openvpn/*
    ovpn_genconfig -u tcp://localhost
    sed -i 's|^push|#push|' /etc/openvpn/openvpn.conf
    echo localhost | ovpn_initpki nopass
    easyrsa build-client-full host nopass
    ovpn_getclient host | sed '
        s|localhost 1194|localhost 13194|;
        s|redirect-gateway.*|route 172.19.0.0 255.255.0.0|;
    ' > "/local/$dest"
fi
 
# Workaround for https://github.com/wojas/docker-mac-network/issues/6
/sbin/iptables -I FORWARD 1 -i tun+ -j ACCEPT
 
exec ovpn_run

上述代码中,172.19.0.0是我的docker服务的IP段,255.255.0.0是我docker服务的子网掩码。都可以到容器中用ifconfig查看。

使用如下命令可以进入docker容器:

docker exec -it apollo-quick-start /bin/bash

Step4.

在刚刚克隆下的目录中执行 ,注意因为是后台执行所以你要等看到当前目录生成docker-for-mac.ovpn这个文件为止

docker-compose up -d

要加-d参数,这样保证后台运行,不会退出。

在docker-for-mac.ovpn文件中添加一行

comp-lzo yes

作用是:在vpn连接中启用压缩功能,如果使用这个功能,那么客户端配置文件中也要使用该指令。

Step5.

双击docker-for-mac.ovpn这个文件,然后跟着tunnelblick提示一直点就行了。

最后连接VPN,完成打通。

3.注意事项

如果要重新生成vpn文件,需要删除docker-for-mac/conifg目录下的文件,同时删除如下相关容器:

代码语言:javascript
复制
CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS                        PORTS                                                  NAMES
3f3ca264c533        kylemanna/openvpn              "/local/helpers/run.…"   10 hours ago        Exited (0) 37 minutes ago                                                            docker-mac-network_openvpn_1
03f57102a268        docker-mac-network_proxy       "socat TCP-LISTEN:13…"   10 hours ago        Exited (143) 37 minutes ago                                                          docker-mac-network_proxy_1

否则,再次执行docker-compose up -d可能会失败。

4.验证

ping验证

172.19.0.3是docker中apollo配置中心的ip

代码语言:javascript
复制
ping 172.19.0.3
PING 172.19.0.3 (172.19.0.3): 56 data bytes
64 bytes from 172.19.0.3: icmp_seq=0 ttl=63 time=0.892 ms
64 bytes from 172.19.0.3: icmp_seq=1 ttl=63 time=1.826 ms

(3).相关文章

kubernetes-1:使用kubeadm搭建K8S单master节点集群

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 千里行走 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档