继手动滑稽之golang-vmware-driver广告篇,今天把vmware-driver完成
然而我却要发一篇牢骚,这是对docker公信力的挑战!!!
本来很简单的升级到vmware 15.x的兼容vmx文件简直是小菜一碟
顺着大便,把Windows 7 + Tiny Linux 4.19 + XFS + Vmware Workstation 15 (PRO) 下篇dockerの奥义提到的知识点1涂抹了一下
这样就达成了1986年toshiba洗衣机广告那样的全自动效应:
更新driver再也不用打开VMware workstation手动停止,更新配置了,效果异常的完美
在此基础之上,配套了ssh和dockerd port,这样我又可以让各位猜猜猜了
然而ssh port配合无间,dockerd port就...一言能尽,失败!
为什么失败先从怎么成功说起,一言能尽,减了一处hard code,加了3行GetSSHPort,内容从base.go来,d *BaseDriver好吧,这点legacy就别缴税了
错误性息就不贴了没头脑和不高兴,聚焦到流程后,我在git的源码处发现了
WaitForDocker() --> provision.WaitForDocker(provisioner, engine.DefaultPort)
如果进一步检索,甚至发现
dockerPort := engine.DefaultPort
甚至又又探测出
utils_test.go dockerPort := 1234
为了颠覆印象,又找到了
GenerateDockerOptions(dockerPort int ..
.{ ...
DOCKER_HOST='-H tcp://0.0.0.0:{{.DockerPort}}'
... engineConfigContext := EngineConfigContext{
DockerPort: dockerPort, ......
}
最后诧异的联想machine/drivers/azure/util.go
// getSecurityRules creates network security group rules based on driver
// configuration such as SSH port, docker port and swarm port.// Base ports to be opened for any machine
rl := []network.SecurityRule{
mkRule(100, "SSHAllowAny", "Allow ssh from public Internet", "*", fmt.Sprintf("%d", d.BaseDriver.SSHPort), network.TCP),
mkRule(300, "DockerAllowAny", "Allow docker engine access (TLS-protected)", "*", fmt.Sprintf("%d", d.DockerPort), network.TCP),
}
好吧,最终的觉悟是,对改动docker/machine我是想说NO的
machine/libmachine/provision/ 绝大多数文件的日期都是在2年前,或者4年前
至今,仍旧保持着最初的风貌,而我的新光盘和new driver配合非常默契,当然少了自定义的docker port也无所谓,至少我确认了所有的远景都在预期内
至多,不少一个port
全篇无图,希望能用心灵和文字的力量感受到视觉上新光盘和new driver的抽象
以上233的docker/machine揭发完毕
请轻声鼓掌
OVER.