目录
(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节点集群