Windows 下使用 Docker 的一个疑问,懂的老哥们帮忙解答一下。
<p>我是后端开发一枚,之前一直用 Windows + Vagrant + Linux 虚拟机(VirtualBox) 搭配开发环境,一直用的挺好也挺爽;但这种方案有一个问题,就是开发环境(无 Docker )、测试环境( Docker )和生产环境( Docker )不是一致的,代码即使在组内所有开发人员的开发环境中都能正常工作,到了测试环境和生产环境仍可能出问题(我自己就遇到过一两次这种情况),所以开发环境也打算上 Docker 。</p>
<p>不过,前两天做了一些调研,据说 Docker For Windows 比较坑,不论是用 WSL2 backend 还是 Hyper-V backend (两种 backend 好像都是通过在 Hyper-V 虚拟机中跑的 docker ),那替代方案是什么?是 Windows + Vagrant + Linux 虚拟机(VirtualBox) + Docker 么?这个方案原理上好像和 docker-machine 异曲同工,使用上有没有什么坑呢?懂的老哥们帮忙解答一下呗,或者赐教一下更好的方案。</p>
收藏(0)
分享
相关标签:
注意:本文归作者所有,未经作者允许,不得转载
-
2022年6月6日 14:26
主要还是为了追求一致性,不然就不折腾了。
0
0
-
2022年6月6日 14:26
wsl2 + docker 有一个非常恶心的 bug
你通过 socket 进行 bind mount 的 volume, 在 windows 每次重新启动后, 会变成空的
具体表现为你用 portainer 的 docker compose 创建的容器, 每次 windows 重启后, 都会被初始化, 因为 bind mount 的文件夹是空的. 只能手动 recreate 有问题的文件夹.
如果你不用 socket, 而是直接用 WSL 的命令行创建容器, 就没有问题, 然而这样创建的容器你用 portainer 是灰色的管理不了的. 你要对容器进行任何操作只能连入 WSL 打命令....
0
0
-
2022年6月6日 14:26
打错字了, 是 recreate 有问题的容器
0
0
-
2022年6月6日 14:57
个人建议, 宿主机 4c8t 或以上, RAM 在 32G 或以上的无脑虚拟机.
比 WSL2 少无数的坑
比如
固定 ip 的问题
网络 bridge 的问题
容器与宿主机应用互通的问题
mount 的问题
你要轻量使用或者是搞开发, 偶尔开着用用, 可以 WSL2
0
0
-
2022年6月6日 15:29
其实搞开发 wsl2 无所谓, 坑比较少
坑多的是拿来搞生产.
systemd 不能用, 各种基于 sokcet 的操作都有各种 bug, 不说 portainer 这种 webui, 就连 watchtower 这种, 用 socket 升级个镜像, 然后新的镜像生成的容器就有几率出问题( 你在纯 linux+docker 下绝对不会出现这种问题
还有涉及到网络管理方面的 wsl2 的问题更是多到吐, 原因就是 wsl2 的网络实现已经是微软都维护不来的屎山了.
你如果只用 wsl2 来编译调试, 使用一些比较强大的 linux 命令行工具的话, wsl2 还是不错的.
0
0