本文编写于 112 天前,最后修改于 112 天前,其中某些信息可能已经过时。

由于日常使用与娱乐都长期使用 windows,
多次将日常系统迁移成 GNU linux系统未果
转投 wsl
只是 wsl1 是将nt封装成linux系统调用,没法完整支持所有abi,不能运行docker
而 wsl2 则放弃封装,使用hyperV虚拟机并打通内外接口,故而是完整的linux体验,可以使用docker
但一直以来hyperV 不能与 VMware 共存
故而只能使用 wsl 进行一部分的开发,docker 一直只能使用的VMware里的ubuntu与centos
好在2004版本后,配合最新的VMware16,VMware与hyperV可以共存了
使用wsl2自然顺理成章
一个windows,多个linux虚拟机,环境打通,浑然一体的使用体验
基于wsl2 engine的docker desktop与不管在powershell还是各个wsl内部shell都能使用到的docker-compose, 方便无比
然而。。。这玩意还是不太成熟,偶尔就要踩踩坑,这里把遇到的随便记录下

  1. mysql初始化失败
    问题:
2020-10-05 09:32:16+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.31-1debian10 started.
2020-10-05 09:32:16+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2020-10-05 09:32:16+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.31-1debian10 started.
2020-10-05 09:32:17+00:00 [Note] [Entrypoint]: Initializing database files
2020-10-05T09:32:17.066528Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2020-10-05T09:32:17.070421Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2020-10-05T09:32:17.070500Z 0 [ERROR] Aborting

原因:
mysql初始化时检测到文件夹不为空
未知(猜测:wsl文件系统上下文的io导致文件夹不为空
解决:
离开wsl内shell,使用powershell上下文启动

  1. docker-compose 启动失败
    报错:
docker-credential-desktop not installed or not available in PATH
Failed to execute

解决:
删除 ~/.docker/config.json
或改掉其中的 "credsStore":"desktop",修改"credsStore"为"_credsStore"