Docker for Windows 网络方面的坑

环境

  • Windows 10 LTSC 2019 Version 1809
  • 启用 Hyper-V
  • 安装 Docker for Windows 非 Docker Toolbox

问题

  1. 网络状态未识别,默认安装的两个虚拟交换机 Default Switch 和 DockerNAT 一直是未识别的网络

mtpkjc4jBe

  1. 默认安装的虚拟机不显示 IP 地址,Hyper-V 也无法连接上虚拟机

  1. 命令 docker-machine ls 显示为空,即使上图中 Docker 的宿主机是存在的

和这位遇到的情况差不多:https://segmentfault.com/q/1010000014706486

结果

放弃。有 Linux 不用,我在 Windows 上用 Docker 图的啥啊,又不馋她身子

更可笑的是,这类的 issue 三年前就有人提了:https://github.com/docker/for-win/issues/367

另一个原因是,我对 host-only、nat、bridge 啥的不了解

呃,没想到最终结果是弃坑啊…

不过,现在很多人在搞 Docker 替换啊,比如 Podman 三件套啊。

但是我怎么觉得没意义… 不过百花齐放就是好啊 :stuck_out_tongue_winking_eye:

1赞

其实,后来我又试了一遍,结果搞得还蓝屏了。还好最近的还原点是前一天晚上,没造成多大麻烦。

等放假回家,多看看计网知识,再到备用机上折腾吧。

如果不是太重的活,其实可以买个N1盒子刷机来耍docker

1赞

NAT 你得手动分配IP,例如192.168.1.123

1赞

我也觉得别再 Windows 上折腾 Docker 了,还不如用 Hyper-V 虚拟一台 Ubuntu 出来,然后再上 Docker

1赞

确实。所以买了台 RamNode 家的 VPS,顺便还能把 IPv6 利用起来。

我继续查了点资料后,发现 Docker 默认的网络模式其实是 bridge,参见:https://docs.docker.com/network/

但是,Docker bridge 的实现方式好像又跟 Linux bridge 不太一样,具体我没看太懂,参见:https://www.v2ex.com/t/344321

Docker bridge 模式下 Docker Daemon 会创建一个名为 docker0 的虚拟网桥( https://yeasy.gitbooks.io/docker_practice/advanced_network/docker0.html ),用于连接宿主机与容器,或者是容器之间的通信……

不过呢,以上所说的都是 Linux 环境下的。Docker for Windows 虽然同样默认 bridge 模式,但是由于实现方式不同,

Because of the way networking is implemented in Docker Desktop for Windows, you cannot see a docker0 interface on the host. This interface is actually within the virtual machine.

Windows 上是不存在 docker0 这玩意儿的,参见:https://docs.docker.com/docker-for-windows/networking/

所以,我就一直在这里面转不出来。

人生苦短,远离 Docker for Windows。至少也要等 WSL 2 正式发布。

P.S. VS Code 中安装 Remote - SSHRemote - Containers 这两个插件会非常爽,只是笔记本的 8G 内存感觉不够看了。

1赞

默默看了眼我那个内存…算了搬砖去了

不趁内存降价升级一下?
我内存升级了,4+4,然而CPU才1.4,焊死在主板上那种 :sob:

教训:买长期使用的笔记本,一定要买有升级余地的(内存槽+SSD槽+CPU可拆卸)。

:sweat_smile: 加了块固态硬盘,但是内存条是焊在主板上的就很难受……

试下Kitematic

不要为了一个坑引入另一个坑

:speak_no_evil: 我试试

貌似8代以前的笔记本标压都能拆卸,然后就是。。。蓝天模具的,直接台式机CPU,自然可以拆卸,显卡都行

也折腾了一阵,不过果断找了太机器ubuntu了,生命诚可贵,不能浪费在这种事情上,做完事情才是最重要的。