参考请注意: 该文档创建于 2022/3/14,请注意随时间流逝文档信息是否过时,是否还有可参考的价值。 该文档仅作为个人笔记记录。 该文档记录时,使用的软件等版本会列在文档中,请注意识别。

安装

死亡之路寒假的某一天,我看见了docker这个东西,安装了vscode插件,然后它自动下载了docker desktop。
然后不知道这是干啥的。
然后一艘,发现docker desktop不能在家庭版运行(但是现在可以了!
按照网上的运行方法,在系统中开启了hyper-v。。。
然后安装了wsl2(这个没问题
之后再次安装docker desktop,准备配置,发现问题

  1. 开始就是docker engine stopped,然后点设置一直转圈圈
  2. 用了两次某命令🆗了,但是检测不到wsl2,多次重装,试图使之成功
    这个时候文件搜不到
  3. 多次重装乱调之后,现在安装,前端界面都打不开了。。。

    试图复活

    试图寻找一条复活的道路:考虑重装系统,此外
    https://blog.csdn.net/qq_41890209/article/details/113844451
    https://answers.microsoft.com/zh-hans/windows/forum/all/win10%E5%AE%B6%E5%BA%AD%E7%89%88%E5%A6%82%E4%BD%95/dbed5740-f2f2-4ae1-b661-34abaeacc819
    Dism /online /disable-feature /featurename:Microsoft-Hyper-V-All /Remove
    https://zhuanlan.zhihu.com/p/180102893
    Dism /Online /Cleanup-Image /RestoreHealth Dism.exe /online /Cleanup-Image /StartComponentCleanup sfc /scannow
    Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All ```bash Dism /online /disable-feature /featurename:Microsoft-Hyper-V-All /Remove C:\Users\Administrator>sfc /scannow

开始系统扫描。此过程将需要一些时间。

开始系统扫描的验证阶段。 验证 100% 已完成。

Windows 资源保护找到了损坏文件并成功修复了它们。 对于联机修复,位于 windir\Logs\CBS\CBS.log 的 CBS 日志文件中 有详细信息。例如 C:\Windows\Logs\CBS\CBS.log。对于脱机修复, /OFFLOGFILE 标记提供的日志文件中有详细信息。

  1. 然后重启一次,再试试。<br />此时还是可以使用WSL,没问题
  2. <a name="WONLD"></a>
  3. ### 病危通知书
  4. ```bash
  5. PS C:\Users\Administrator> & "C:\Program Files\Docker\Docker\resources\com.docker.diagnose.exe" check
  6. [084:13:18:30.911][I] ipc.NewClient: 16c87ef7-com.docker.diagnose -> \\.\pipe\dockerBackendV2 com.docker.service.exe
  7. [goroutine 1 [running, locked to thread]:
  8. [win/backend/pkg/service.NewClientForPath(...)
  9. [ win/backend/pkg/service/service.go:42
  10. [win/backend/pkg/service.NewClient({0xdaf112, 0x13}, {0x0, 0x0, 0x0})
  11. [ win/backend/pkg/service/service.go:31 +0xd0
  12. [common/pkg/diagkit/gather/diagnose.init()
  13. [ common/pkg/diagkit/gather/diagnose/ipc_windows.go:23 +0x11f
  14. Starting diagnostics
  15. [PASS] DD0027: is there available disk space on the host?
  16. [SKIP] DD0028: is there available VM disk space?
  17. [FAIL] DD0031: does the Docker API work? error during connect: In the default daemon configuration on Windows, the docker client must be run with elevated privileges to connect.: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine_linux/v1.24/containers/json?limit=0": open //./pipe/docker_engine_linux: The system cannot find the file specified.
  18. [FAIL] DD0004: is the Docker engine running? Get "http://ipc/docker": open \\.\pipe\dockerLifecycleServer: The system cannot find the file specified.
  19. [084:13:18:31.182][I] ipc.NewClient: dfebe460-com.docker.diagnose -> \\.\pipe\dockerLifecycleServer VMDockerdAPI
  20. [linuxkit/pkg/desktop-host-tools/pkg/client.NewClientForPath(...)
  21. [ linuxkit/pkg/desktop-host-tools/pkg/client/client.go:59
  22. [linuxkit/pkg/desktop-host-tools/pkg/client.NewClient({0xdaf112, 0x13})
  23. [ linuxkit/pkg/desktop-host-tools/pkg/client/client.go:53 +0xa5
  24. [common/pkg/diagkit/gather/diagnose.isDockerEngineRunning()
  25. [ common/pkg/diagkit/gather/diagnose/dockerd.go:21 +0x29
  26. [common/pkg/diagkit/gather/diagnose.(*test).GetResult(0x1372200)
  27. [ common/pkg/diagkit/gather/diagnose/test.go:46 +0x43
  28. [common/pkg/diagkit/gather/diagnose.Run.func1(0x1372200)
  29. [ common/pkg/diagkit/gather/diagnose/run.go:17 +0x5a
  30. [common/pkg/diagkit/gather/diagnose.walkOnce.func1(0xc16677, 0x1372200)
  31. [ common/pkg/diagkit/gather/diagnose/run.go:140 +0x77
  32. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x2, 0x1372200, 0xc00035f830)
  33. [ common/pkg/diagkit/gather/diagnose/run.go:146 +0x36
  34. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x1, 0x1372280, 0xc00035f830)
  35. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  36. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x0, 0x100000000e89100, 0xc00035f830)
  37. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  38. [common/pkg/diagkit/gather/diagnose.walkOnce(0xcf1e20, 0xc00035f970)
  39. [ common/pkg/diagkit/gather/diagnose/run.go:135 +0xcc
  40. [common/pkg/diagkit/gather/diagnose.Run(0x1372400, 0xc00035fb48, {0xc00035fb00, 0x1, 0x1})
  41. [ common/pkg/diagkit/gather/diagnose/run.go:16 +0x1ce
  42. [main.checkCmd({0xc00006c3d0, 0xc00006c3d0, 0x4}, {0x0, 0x0})
  43. [ common/cmd/com.docker.diagnose/main.go:131 +0x105
  44. [main.main()
  45. [ common/cmd/com.docker.diagnose/main.go:97 +0x273
  46. [084:13:18:31.183][I] (d0a01ebf) dfebe460-com.docker.diagnose C->S VMDockerdAPI GET /docker
  47. [084:13:18:31.183][E] (d0a01ebf) dfebe460-com.docker.diagnose C<-S NoResponse GET /docker (0s): Get "http://ipc/docker": open \\.\pipe\dockerLifecycleServer: The system cannot find the file specified.
  48. [linuxkit/pkg/desktop-host-tools/pkg/client.(*lifecycleClient).GetDockerState(0xc000402040)
  49. [ linuxkit/pkg/desktop-host-tools/pkg/client/client.go:105 +0x5c
  50. [common/pkg/diagkit/gather/diagnose.isDockerEngineRunning()
  51. [ common/pkg/diagkit/gather/diagnose/dockerd.go:22 +0x32
  52. [common/pkg/diagkit/gather/diagnose.(*test).GetResult(0x1372200)
  53. [ common/pkg/diagkit/gather/diagnose/test.go:46 +0x43
  54. [common/pkg/diagkit/gather/diagnose.Run.func1(0x1372200)
  55. [ common/pkg/diagkit/gather/diagnose/run.go:17 +0x5a
  56. [common/pkg/diagkit/gather/diagnose.walkOnce.func1(0xc16677, 0x1372200)
  57. [ common/pkg/diagkit/gather/diagnose/run.go:140 +0x77
  58. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x2, 0x1372200, 0xc00069f830)
  59. [ common/pkg/diagkit/gather/diagnose/run.go:146 +0x36
  60. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x1, 0x1372280, 0xc00069f830)
  61. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  62. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x0, 0x100000000e89100, 0xc00069f830)
  63. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  64. [common/pkg/diagkit/gather/diagnose.walkOnce(0xcf1e20, 0xc00035f970)
  65. [ common/pkg/diagkit/gather/diagnose/run.go:135 +0xcc
  66. [common/pkg/diagkit/gather/diagnose.Run(0x1372400, 0xc00035fb48, {0xc00035fb00, 0x1, 0x1})
  67. [ common/pkg/diagkit/gather/diagnose/run.go:16 +0x1ce
  68. [main.checkCmd({0xc00006c3d0, 0xc00006c3d0, 0x4}, {0x0, 0x0})
  69. [ common/cmd/com.docker.diagnose/main.go:131 +0x105
  70. [main.main()
  71. [ common/cmd/com.docker.diagnose/main.go:97 +0x273
  72. [084:13:18:31.183][I] (d0a01ebf-1) dfebe460-com.docker.diagnose C->S VMDockerdAPI GET /ping
  73. [084:13:18:31.183][E] (d0a01ebf-1) dfebe460-com.docker.diagnose C<-S NoResponse GET /ping (0s): Get "http://ipc/ping": open \\.\pipe\dockerLifecycleServer: The system cannot find the file specified.
  74. [linuxkit/pkg/desktop-host-tools/pkg/client.(*lifecycleClient).GetDockerState(0xc000402040)
  75. [ linuxkit/pkg/desktop-host-tools/pkg/client/client.go:105 +0x5c
  76. [common/pkg/diagkit/gather/diagnose.isDockerEngineRunning()
  77. [ common/pkg/diagkit/gather/diagnose/dockerd.go:22 +0x32
  78. [common/pkg/diagkit/gather/diagnose.(*test).GetResult(0x1372200)
  79. [ common/pkg/diagkit/gather/diagnose/test.go:46 +0x43
  80. [common/pkg/diagkit/gather/diagnose.Run.func1(0x1372200)
  81. [ common/pkg/diagkit/gather/diagnose/run.go:17 +0x5a
  82. [common/pkg/diagkit/gather/diagnose.walkOnce.func1(0xc16677, 0x1372200)
  83. [ common/pkg/diagkit/gather/diagnose/run.go:140 +0x77
  84. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x2, 0x1372200, 0xc00069f830)
  85. [ common/pkg/diagkit/gather/diagnose/run.go:146 +0x36
  86. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x1, 0x1372280, 0xc00069f830)
  87. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  88. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x0, 0x100000000e89100, 0xc00069f830)
  89. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  90. [common/pkg/diagkit/gather/diagnose.walkOnce(0xcf1e20, 0xc00035f970)
  91. [ common/pkg/diagkit/gather/diagnose/run.go:135 +0xcc
  92. [common/pkg/diagkit/gather/diagnose.Run(0x1372400, 0xc00035fb48, {0xc00035fb00, 0x1, 0x1})
  93. [ common/pkg/diagkit/gather/diagnose/run.go:16 +0x1ce
  94. [main.checkCmd({0xc00006c3d0, 0xc00006c3d0, 0x4}, {0x0, 0x0})
  95. [ common/cmd/com.docker.diagnose/main.go:131 +0x105
  96. [main.main()
  97. [ common/cmd/com.docker.diagnose/main.go:97 +0x273
  98. [084:13:18:32.197][I] (d0a01ebf-2) dfebe460-com.docker.diagnose C->S VMDockerdAPI GET /ping
  99. [084:13:18:32.197][E] (d0a01ebf-2) dfebe460-com.docker.diagnose C<-S NoResponse GET /ping (0s): Get "http://ipc/ping": open \\.\pipe\dockerLifecycleServer: The system cannot find the file specified.
  100. [linuxkit/pkg/desktop-host-tools/pkg/client.(*lifecycleClient).GetDockerState(0xc000402040)
  101. [ linuxkit/pkg/desktop-host-tools/pkg/client/client.go:105 +0x5c
  102. [common/pkg/diagkit/gather/diagnose.isDockerEngineRunning()
  103. [ common/pkg/diagkit/gather/diagnose/dockerd.go:22 +0x32
  104. [common/pkg/diagkit/gather/diagnose.(*test).GetResult(0x1372200)
  105. [ common/pkg/diagkit/gather/diagnose/test.go:46 +0x43
  106. [common/pkg/diagkit/gather/diagnose.Run.func1(0x1372200)
  107. [ common/pkg/diagkit/gather/diagnose/run.go:17 +0x5a
  108. [common/pkg/diagkit/gather/diagnose.walkOnce.func1(0xc16677, 0x1372200)
  109. [ common/pkg/diagkit/gather/diagnose/run.go:140 +0x77
  110. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x2, 0x1372200, 0xc00069f830)
  111. [ common/pkg/diagkit/gather/diagnose/run.go:146 +0x36
  112. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x1, 0x1372280, 0xc00069f830)
  113. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  114. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x0, 0x100000000e89100, 0xc00069f830)
  115. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  116. [common/pkg/diagkit/gather/diagnose.walkOnce(0xcf1e20, 0xc00035f970)
  117. [ common/pkg/diagkit/gather/diagnose/run.go:135 +0xcc
  118. [common/pkg/diagkit/gather/diagnose.Run(0x1372400, 0xc00035fb48, {0xc00035fb00, 0x1, 0x1})
  119. [ common/pkg/diagkit/gather/diagnose/run.go:16 +0x1ce
  120. [main.checkCmd({0xc00006c3d0, 0xc00006c3d0, 0x4}, {0x0, 0x0})
  121. [ common/cmd/com.docker.diagnose/main.go:131 +0x105
  122. [main.main()
  123. [ common/cmd/com.docker.diagnose/main.go:97 +0x273
  124. [084:13:18:33.198][I] (d0a01ebf-3) dfebe460-com.docker.diagnose C->S VMDockerdAPI GET /ping
  125. [084:13:18:33.198][E] (d0a01ebf-3) dfebe460-com.docker.diagnose C<-S NoResponse GET /ping (0s): Get "http://ipc/ping": open \\.\pipe\dockerLifecycleServer: The system cannot find the file specified.
  126. [linuxkit/pkg/desktop-host-tools/pkg/client.(*lifecycleClient).GetDockerState(0xc000402040)
  127. [ linuxkit/pkg/desktop-host-tools/pkg/client/client.go:105 +0x5c
  128. [common/pkg/diagkit/gather/diagnose.isDockerEngineRunning()
  129. [ common/pkg/diagkit/gather/diagnose/dockerd.go:22 +0x32
  130. [common/pkg/diagkit/gather/diagnose.(*test).GetResult(0x1372200)
  131. [ common/pkg/diagkit/gather/diagnose/test.go:46 +0x43
  132. [common/pkg/diagkit/gather/diagnose.Run.func1(0x1372200)
  133. [ common/pkg/diagkit/gather/diagnose/run.go:17 +0x5a
  134. [common/pkg/diagkit/gather/diagnose.walkOnce.func1(0xc16677, 0x1372200)
  135. [ common/pkg/diagkit/gather/diagnose/run.go:140 +0x77
  136. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x2, 0x1372200, 0xc00069f830)
  137. [ common/pkg/diagkit/gather/diagnose/run.go:146 +0x36
  138. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x1, 0x1372280, 0xc00069f830)
  139. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  140. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x0, 0x100000000e89100, 0xc00069f830)
  141. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  142. [common/pkg/diagkit/gather/diagnose.walkOnce(0xcf1e20, 0xc00035f970)
  143. [ common/pkg/diagkit/gather/diagnose/run.go:135 +0xcc
  144. [common/pkg/diagkit/gather/diagnose.Run(0x1372400, 0xc00035fb48, {0xc00035fb00, 0x1, 0x1})
  145. [ common/pkg/diagkit/gather/diagnose/run.go:16 +0x1ce
  146. [main.checkCmd({0xc00006c3d0, 0xc00006c3d0, 0x4}, {0x0, 0x0})
  147. [ common/cmd/com.docker.diagnose/main.go:131 +0x105
  148. [main.main()
  149. [ common/cmd/com.docker.diagnose/main.go:97 +0x273
  150. [084:13:18:34.201][I] (d0a01ebf-4) dfebe460-com.docker.diagnose C->S VMDockerdAPI GET /ping
  151. [084:13:18:34.201][E] (d0a01ebf-4) dfebe460-com.docker.diagnose C<-S NoResponse GET /ping (197µs): Get "http://ipc/ping": open \\.\pipe\dockerLifecycleServer: The system cannot find the file specified.
  152. [linuxkit/pkg/desktop-host-tools/pkg/client.(*lifecycleClient).GetDockerState(0xc000402040)
  153. [ linuxkit/pkg/desktop-host-tools/pkg/client/client.go:105 +0x5c
  154. [common/pkg/diagkit/gather/diagnose.isDockerEngineRunning()
  155. [ common/pkg/diagkit/gather/diagnose/dockerd.go:22 +0x32
  156. [common/pkg/diagkit/gather/diagnose.(*test).GetResult(0x1372200)
  157. [ common/pkg/diagkit/gather/diagnose/test.go:46 +0x43
  158. [common/pkg/diagkit/gather/diagnose.Run.func1(0x1372200)
  159. [ common/pkg/diagkit/gather/diagnose/run.go:17 +0x5a
  160. [common/pkg/diagkit/gather/diagnose.walkOnce.func1(0xc16677, 0x1372200)
  161. [ common/pkg/diagkit/gather/diagnose/run.go:140 +0x77
  162. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x2, 0x1372200, 0xc00069f830)
  163. [ common/pkg/diagkit/gather/diagnose/run.go:146 +0x36
  164. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x1, 0x1372280, 0xc00069f830)
  165. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  166. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x0, 0x100000000e89100, 0xc00069f830)
  167. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  168. [common/pkg/diagkit/gather/diagnose.walkOnce(0xcf1e20, 0xc00035f970)
  169. [ common/pkg/diagkit/gather/diagnose/run.go:135 +0xcc
  170. [common/pkg/diagkit/gather/diagnose.Run(0x1372400, 0xc00035fb48, {0xc00035fb00, 0x1, 0x1})
  171. [ common/pkg/diagkit/gather/diagnose/run.go:16 +0x1ce
  172. [main.checkCmd({0xc00006c3d0, 0xc00006c3d0, 0x4}, {0x0, 0x0})
  173. [ common/cmd/com.docker.diagnose/main.go:131 +0x105
  174. [main.main()
  175. [ common/cmd/com.docker.diagnose/main.go:97 +0x273
  176. [084:13:18:35.204][I] (d0a01ebf-5) dfebe460-com.docker.diagnose C->S VMDockerdAPI GET /ping
  177. [084:13:18:35.204][E] (d0a01ebf-5) dfebe460-com.docker.diagnose C<-S NoResponse GET /ping (128.8µs): Get "http://ipc/ping": open \\.\pipe\dockerLifecycleServer: The system cannot find the file specified.
  178. [linuxkit/pkg/desktop-host-tools/pkg/client.(*lifecycleClient).GetDockerState(0xc000402040)
  179. [ linuxkit/pkg/desktop-host-tools/pkg/client/client.go:105 +0x5c
  180. [common/pkg/diagkit/gather/diagnose.isDockerEngineRunning()
  181. [ common/pkg/diagkit/gather/diagnose/dockerd.go:22 +0x32
  182. [common/pkg/diagkit/gather/diagnose.(*test).GetResult(0x1372200)
  183. [ common/pkg/diagkit/gather/diagnose/test.go:46 +0x43
  184. [common/pkg/diagkit/gather/diagnose.Run.func1(0x1372200)
  185. [ common/pkg/diagkit/gather/diagnose/run.go:17 +0x5a
  186. [common/pkg/diagkit/gather/diagnose.walkOnce.func1(0xc16677, 0x1372200)
  187. [ common/pkg/diagkit/gather/diagnose/run.go:140 +0x77
  188. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x2, 0x1372200, 0xc00069f830)
  189. [ common/pkg/diagkit/gather/diagnose/run.go:146 +0x36
  190. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x1, 0x1372280, 0xc00069f830)
  191. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  192. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x0, 0x100000000e89100, 0xc00069f830)
  193. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  194. [common/pkg/diagkit/gather/diagnose.walkOnce(0xcf1e20, 0xc00035f970)
  195. [ common/pkg/diagkit/gather/diagnose/run.go:135 +0xcc
  196. [common/pkg/diagkit/gather/diagnose.Run(0x1372400, 0xc00035fb48, {0xc00035fb00, 0x1, 0x1})
  197. [ common/pkg/diagkit/gather/diagnose/run.go:16 +0x1ce
  198. [main.checkCmd({0xc00006c3d0, 0xc00006c3d0, 0x4}, {0x0, 0x0})
  199. [ common/cmd/com.docker.diagnose/main.go:131 +0x105
  200. [main.main()
  201. [ common/cmd/com.docker.diagnose/main.go:97 +0x273
  202. [084:13:18:36.210][I] (d0a01ebf-6) dfebe460-com.docker.diagnose C->S VMDockerdAPI GET /ping
  203. [084:13:18:36.211][E] (d0a01ebf-6) dfebe460-com.docker.diagnose C<-S NoResponse GET /ping (186.9µs): Get "http://ipc/ping": open \\.\pipe\dockerLifecycleServer: The system cannot find the file specified.
  204. [linuxkit/pkg/desktop-host-tools/pkg/client.(*lifecycleClient).GetDockerState(0xc000402040)
  205. [ linuxkit/pkg/desktop-host-tools/pkg/client/client.go:105 +0x5c
  206. [common/pkg/diagkit/gather/diagnose.isDockerEngineRunning()
  207. [ common/pkg/diagkit/gather/diagnose/dockerd.go:22 +0x32
  208. [common/pkg/diagkit/gather/diagnose.(*test).GetResult(0x1372200)
  209. [ common/pkg/diagkit/gather/diagnose/test.go:46 +0x43
  210. [common/pkg/diagkit/gather/diagnose.Run.func1(0x1372200)
  211. [ common/pkg/diagkit/gather/diagnose/run.go:17 +0x5a
  212. [common/pkg/diagkit/gather/diagnose.walkOnce.func1(0xc16677, 0x1372200)
  213. [ common/pkg/diagkit/gather/diagnose/run.go:140 +0x77
  214. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x2, 0x1372200, 0xc00069f830)
  215. [ common/pkg/diagkit/gather/diagnose/run.go:146 +0x36
  216. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x1, 0x1372280, 0xc00069f830)
  217. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  218. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x0, 0x100000000e89100, 0xc00069f830)
  219. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  220. [common/pkg/diagkit/gather/diagnose.walkOnce(0xcf1e20, 0xc00035f970)
  221. [ common/pkg/diagkit/gather/diagnose/run.go:135 +0xcc
  222. [common/pkg/diagkit/gather/diagnose.Run(0x1372400, 0xc00035fb48, {0xc00035fb00, 0x1, 0x1})
  223. [ common/pkg/diagkit/gather/diagnose/run.go:16 +0x1ce
  224. [main.checkCmd({0xc00006c3d0, 0xc00006c3d0, 0x4}, {0x0, 0x0})
  225. [ common/cmd/com.docker.diagnose/main.go:131 +0x105
  226. [main.main()
  227. [ common/cmd/com.docker.diagnose/main.go:97 +0x273
  228. [084:13:18:37.211][I] (d0a01ebf-7) dfebe460-com.docker.diagnose C->S VMDockerdAPI GET /ping
  229. [084:13:18:37.211][E] (d0a01ebf-7) dfebe460-com.docker.diagnose C<-S NoResponse GET /ping (177.8µs): Get "http://ipc/ping": open \\.\pipe\dockerLifecycleServer: The system cannot find the file specified.
  230. [linuxkit/pkg/desktop-host-tools/pkg/client.(*lifecycleClient).GetDockerState(0xc000402040)
  231. [ linuxkit/pkg/desktop-host-tools/pkg/client/client.go:105 +0x5c
  232. [common/pkg/diagkit/gather/diagnose.isDockerEngineRunning()
  233. [ common/pkg/diagkit/gather/diagnose/dockerd.go:22 +0x32
  234. [common/pkg/diagkit/gather/diagnose.(*test).GetResult(0x1372200)
  235. [ common/pkg/diagkit/gather/diagnose/test.go:46 +0x43
  236. [common/pkg/diagkit/gather/diagnose.Run.func1(0x1372200)
  237. [ common/pkg/diagkit/gather/diagnose/run.go:17 +0x5a
  238. [common/pkg/diagkit/gather/diagnose.walkOnce.func1(0xc16677, 0x1372200)
  239. [ common/pkg/diagkit/gather/diagnose/run.go:140 +0x77
  240. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x2, 0x1372200, 0xc00069f830)
  241. [ common/pkg/diagkit/gather/diagnose/run.go:146 +0x36
  242. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x1, 0x1372280, 0xc00069f830)
  243. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  244. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x0, 0x100000000e89100, 0xc00069f830)
  245. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  246. [common/pkg/diagkit/gather/diagnose.walkOnce(0xcf1e20, 0xc00035f970)
  247. [ common/pkg/diagkit/gather/diagnose/run.go:135 +0xcc
  248. [common/pkg/diagkit/gather/diagnose.Run(0x1372400, 0xc00035fb48, {0xc00035fb00, 0x1, 0x1})
  249. [ common/pkg/diagkit/gather/diagnose/run.go:16 +0x1ce
  250. [main.checkCmd({0xc00006c3d0, 0xc00006c3d0, 0x4}, {0x0, 0x0})
  251. [ common/cmd/com.docker.diagnose/main.go:131 +0x105
  252. [main.main()
  253. [ common/cmd/com.docker.diagnose/main.go:97 +0x273
  254. [084:13:18:38.216][I] (d0a01ebf-8) dfebe460-com.docker.diagnose C->S VMDockerdAPI GET /ping
  255. [084:13:18:38.216][E] (d0a01ebf-8) dfebe460-com.docker.diagnose C<-S NoResponse GET /ping (163.8µs): Get "http://ipc/ping": open \\.\pipe\dockerLifecycleServer: The system cannot find the file specified.
  256. [linuxkit/pkg/desktop-host-tools/pkg/client.(*lifecycleClient).GetDockerState(0xc000402040)
  257. [ linuxkit/pkg/desktop-host-tools/pkg/client/client.go:105 +0x5c
  258. [common/pkg/diagkit/gather/diagnose.isDockerEngineRunning()
  259. [ common/pkg/diagkit/gather/diagnose/dockerd.go:22 +0x32
  260. [common/pkg/diagkit/gather/diagnose.(*test).GetResult(0x1372200)
  261. [ common/pkg/diagkit/gather/diagnose/test.go:46 +0x43
  262. [common/pkg/diagkit/gather/diagnose.Run.func1(0x1372200)
  263. [ common/pkg/diagkit/gather/diagnose/run.go:17 +0x5a
  264. [common/pkg/diagkit/gather/diagnose.walkOnce.func1(0xc16677, 0x1372200)
  265. [ common/pkg/diagkit/gather/diagnose/run.go:140 +0x77
  266. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x2, 0x1372200, 0xc00069f830)
  267. [ common/pkg/diagkit/gather/diagnose/run.go:146 +0x36
  268. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x1, 0x1372280, 0xc00069f830)
  269. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  270. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x0, 0x100000000e89100, 0xc00069f830)
  271. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  272. [common/pkg/diagkit/gather/diagnose.walkOnce(0xcf1e20, 0xc00035f970)
  273. [ common/pkg/diagkit/gather/diagnose/run.go:135 +0xcc
  274. [common/pkg/diagkit/gather/diagnose.Run(0x1372400, 0xc00035fb48, {0xc00035fb00, 0x1, 0x1})
  275. [ common/pkg/diagkit/gather/diagnose/run.go:16 +0x1ce
  276. [main.checkCmd({0xc00006c3d0, 0xc00006c3d0, 0x4}, {0x0, 0x0})
  277. [ common/cmd/com.docker.diagnose/main.go:131 +0x105
  278. [main.main()
  279. [ common/cmd/com.docker.diagnose/main.go:97 +0x273
  280. [FAIL] DD0011: are the LinuxKit services running? failed to ping VM diagnosticsd with error: Get "http://ipc/ping": open \\.\pipe\dockerDiagnosticd: The system cannot find the file specified.
  281. [084:13:18:38.221][I] ipc.NewClient: c46aa614-diagnose -> \\.\pipe\dockerDiagnosticd diagnosticsd
  282. [common/pkg/diagkit/gather/diagnose.glob..func13()
  283. [ common/pkg/diagkit/gather/diagnose/linuxkit.go:18 +0x92
  284. [common/pkg/diagkit/gather/diagnose.(*test).GetResult(0x1372180)
  285. [ common/pkg/diagkit/gather/diagnose/test.go:46 +0x43
  286. [common/pkg/diagkit/gather/diagnose.Run.func1(0x1372180)
  287. [ common/pkg/diagkit/gather/diagnose/run.go:17 +0x5a
  288. [common/pkg/diagkit/gather/diagnose.walkOnce.func1(0xc16677, 0x1372180)
  289. [ common/pkg/diagkit/gather/diagnose/run.go:140 +0x77
  290. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x3, 0x1372180, 0xc00069f830)
  291. [ common/pkg/diagkit/gather/diagnose/run.go:146 +0x36
  292. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x2, 0x1372200, 0xc00069f830)
  293. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  294. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x1, 0x1372280, 0xc00069f830)
  295. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  296. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x0, 0x100000000e89100, 0xc00069f830)
  297. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  298. [common/pkg/diagkit/gather/diagnose.walkOnce(0xcf1e20, 0xc00035f970)
  299. [ common/pkg/diagkit/gather/diagnose/run.go:135 +0xcc
  300. [common/pkg/diagkit/gather/diagnose.Run(0x1372400, 0xc00035fb48, {0xc00035fb00, 0x1, 0x1})
  301. [ common/pkg/diagkit/gather/diagnose/run.go:16 +0x1ce
  302. [main.checkCmd({0xc00006c3d0, 0xc00006c3d0, 0x4}, {0x0, 0x0})
  303. [ common/cmd/com.docker.diagnose/main.go:131 +0x105
  304. [main.main()
  305. [ common/cmd/com.docker.diagnose/main.go:97 +0x273
  306. [084:13:18:38.221][I] (2d48ca01) c46aa614-diagnose C->S diagnosticsd GET /ping
  307. [084:13:18:38.221][E] (2d48ca01) c46aa614-diagnose C<-S NoResponse GET /ping (0s): Get "http://ipc/ping": open \\.\pipe\dockerDiagnosticd: The system cannot find the file specified.
  308. [common/pkg/diagkit/gather/diagnose.glob..func13()
  309. [ common/pkg/diagkit/gather/diagnose/linuxkit.go:19 +0x9e
  310. [common/pkg/diagkit/gather/diagnose.(*test).GetResult(0x1372180)
  311. [ common/pkg/diagkit/gather/diagnose/test.go:46 +0x43
  312. [common/pkg/diagkit/gather/diagnose.Run.func1(0x1372180)
  313. [ common/pkg/diagkit/gather/diagnose/run.go:17 +0x5a
  314. [common/pkg/diagkit/gather/diagnose.walkOnce.func1(0xc16677, 0x1372180)
  315. [ common/pkg/diagkit/gather/diagnose/run.go:140 +0x77
  316. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x3, 0x1372180, 0xc00069f830)
  317. [ common/pkg/diagkit/gather/diagnose/run.go:146 +0x36
  318. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x2, 0x1372200, 0xc00069f830)
  319. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  320. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x1, 0x1372280, 0xc00069f830)
  321. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  322. [common/pkg/diagkit/gather/diagnose.walkDepthFirst(0x0, 0x100000000e89100, 0xc00069f830)
  323. [ common/pkg/diagkit/gather/diagnose/run.go:149 +0x73
  324. [common/pkg/diagkit/gather/diagnose.walkOnce(0xcf1e20, 0xc00035f970)
  325. [ common/pkg/diagkit/gather/diagnose/run.go:135 +0xcc
  326. [common/pkg/diagkit/gather/diagnose.Run(0x1372400, 0xc00035fb48, {0xc00035fb00, 0x1, 0x1})
  327. [ common/pkg/diagkit/gather/diagnose/run.go:16 +0x1ce
  328. [main.checkCmd({0xc00006c3d0, 0xc00006c3d0, 0x4}, {0x0, 0x0})
  329. [ common/cmd/com.docker.diagnose/main.go:131 +0x105
  330. [main.main()
  331. [ common/cmd/com.docker.diagnose/main.go:97 +0x273
  332. [PASS] DD0016: is the LinuxKit VM running?
  333. [PASS] DD0001: is the application running?
  334. [SKIP] DD0018: does the host support virtualization?
  335. [PASS] DD0002: does the bootloader have virtualization enabled?
  336. [PASS] DD0017: can a VM be started?
  337. [PASS] DD0024: is WSL installed?
  338. [PASS] DD0021: is the WSL 2 Windows Feature enabled?
  339. [PASS] DD0022: is the Virtual Machine Platform Windows Feature enabled?
  340. [FAIL] DD0025: are WSL distros installed? WSL Distribution docker-desktop is missing
  341. [PASS] DD0026: is the WSL LxssManager service running?
  342. [FAIL] DD0029: is the WSL 2 Linux filesystem corrupt? exit status 0xffffffff
  343. [PASS] DD0015: are the binary symlinks installed?
  344. error during connect: In the default daemon configuration on Windows, the docker client must be run with elevated privileges to connect.: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json": open //./pipe/docker_engine: The system cannot find the file specified.
  345. [FAIL] DD0003: is the Docker CLI working? exit status 1
  346. [PASS] DD0013: is the $PATH ok?
  347. [PASS] DD0005: is the user in the docker-users group?
  348. [PASS] DD0007: is the backend responding?
  349. 2022/03/25 13:18:41 exit status 0xffffffff

一个个解决。现在死掉的是:0031,0004,0011,0025,0029,0003,6个
先打开Ubuntu,再来一次,错误更多更全了。
接下来做另一件事:
在docker文件夹下搜索所有的.exe文件,全部把以管理员身份运行打上勾
顺便发现前端.exe有勾上以兼容模式运行,去掉
然后重启

最终解决方案

系统重装

run helloworld

首先配置docker镜像:https://juejin.cn/post/6847902220399312904

  1. PS C:\WINDOWS\system32> docker run hello-world
  2. Unable to find image 'hello-world:latest' locally
  3. latest: Pulling from library/hello-world
  4. 2db29710123e: Pull complete
  5. Digest: sha256:bfea6278a0a267fad2634554f4f0c6f31981eea41c553fdf5a83e95a41d40c38
  6. Status: Downloaded newer image for hello-world:latest
  7. Hello from Docker!
  8. This message shows that your installation appears to be working correctly.
  9. To generate this message, Docker took the following steps:
  10. 1. The Docker client contacted the Docker daemon.
  11. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
  12. (amd64)
  13. 3. The Docker daemon created a new container from that image which runs the
  14. executable that produces the output you are currently reading.
  15. 4. The Docker daemon streamed that output to the Docker client, which sent it
  16. to your terminal.
  17. To try something more ambitious, you can run an Ubuntu container with:
  18. $ docker run -it ubuntu bash
  19. Share images, automate workflows, and more with a free Docker ID:
  20. https://hub.docker.com/
  21. For more examples and ideas, visit:
  22. https://docs.docker.com/get-started/

Docker

You need to develop a habit of reading English documents,
or be optimized.
About cli: https://docs.docker.com/engine/reference/commandline
About examples used(getting_started): https://docs.docker.com/get-started

基本概念

镜像(image)/构建镜像

镜像可以简单来说是一个操作系统,也可以是你的应用程序以及应用程序的构建环境。
镜像通过docker build从你的应用中构建。

dockerfile

构建之前,首先你需要在你的根目录下创建Dockerfile
(dockerfile如何创建
创建完成后,运行docker build -t mycnode .。其中:
-t mycnode表示构建的这个镜像名字叫mycnode
最后的.表示在当前目录构建
构建完成后,在docker desktop内就看到了一个刚构建的mycnode镜像,如图:
image.png

拉取常用镜像

除了自己才应用构建镜像之外,也经常从Docker Hub去拉一些常用镜像。
常用方式:docker pull image-name:tag,如docker pull mysql:8.0.28

容器(container)/运行容器

容器基于镜像创建。创建容器类似于你将镜像app启动运行,容器是一个正在运行的镜像的实例。
通过[docker run](https://docs.docker.com/engine/reference/commandline/run/)命令通过镜像创建容器。如果本地没有镜像,会尝试从Docker Hub上拉。
这个命令其实很复杂。下面简单介绍常用参数:
-p 8000:80:将你自己电脑的8000端口映射到容器的80端口
-e NAME=value:配置进程环境变量NAMEvalue。nodejs里面可以通过process.env读取进程环境变量的值
-d:容器在后台运行。不知道有没有这个有啥区别。不过都有
-v todo-db:/etc/todos``-v "$(pwd):/app":使用数据卷/绑定挂载,映射到容器的/etc/todos文件夹
-w /work/path:设置工作路径,也就是说,运行命令会在这里运行
--network net-name:该容器并入net-name网络
--network-alias address:设置该容器暴露的socket地址的别名,其它容器连接时,在docker中使用这个别名即可
--name abc:容器名称abc

更新应用

如果你应用的源码有了改变,就把容器删了重新跑就行。

  • 文档里面为什么没有重新建镜像?自动同步吗?还是什么原理?
  • 有没有什么更自动化的方式?
  • 如何区分dev和prod模式?

    命名数据卷(named volume)

    容器之间的文件系统虽然基于镜像创建,但是隔离的。容器删除重建,在其中变更的东西都没啦!
    因此可加入数据卷来使得数据(如数据库的数据)持久保存。
    基本方法:docker volume create <name>,或者前端操作

    绑定挂载(bind mount volume)

    绑定挂载可以将本地(或者其它地方)给挂载到容器目录。会自动更新。
    使用时,相对 named volume,只需要把前面换成本地目录就行了。
    $(pwd)就是当前工作路径。

    网络

    网络模块涉及到不少东西。就比如,设置进程的环境变量,跨进程通信,各种映射

首先,通过docker network create todo-app,创建一个网络,这里名叫todo-app
然后,在docker run中设置--network todo-app就可以在新容器启动时将其放入这个网络下,
设置--network-alias address,在后续docker run启动新的容器时,用address这个别名代指该进程的socket地址来连接。

docker-compose

创建 docker-compose.yml

之前按照示例运行一个完整的带 mysql 的 todolist,过程有点多:输入命令行设置网络,按照顺序启动mysql、todolist,且启动的时候带了很多的参数。
这个文件就是配置这些步骤的。配置完之后,在项目工作目录运行docker-compose up就可以把整个项目跑起来!
另外:

  • docker-compose down:就可以将整个容器组关掉。加入--volumes还会删除应用的命名数据卷
  • 按文档的意思,一次只能运行一个容器组,想换一个项目,必须down了在重开

之前运行应用的命令:

  1. PS> docker run -dp 3000:3000 `
  2. -w /app -v "$(pwd):/app" `
  3. --network todo-app `
  4. -e MYSQL_HOST=mysql `
  5. -e MYSQL_USER=root `
  6. -e MYSQL_PASSWORD=secret `
  7. -e MYSQL_DB=todos `
  8. node:12-alpine `
  9. sh -c "yarn install && yarn run dev"
  1. PS> docker run -d `
  2. --network todo-app --network-alias mysql `
  3. -v todo-mysql-data:/var/lib/mysql `
  4. -e MYSQL_ROOT_PASSWORD=secret `
  5. -e MYSQL_DATABASE=todos `
  6. mysql:8.0.28

然后我们最终写的yml文件如下:

  1. version: "3.7"
  2. services:
  3. app:
  4. image: node:12-alpine
  5. command: sh -c "yarn install && yarn run dev"
  6. ports:
  7. - 3000:3000
  8. working_dir: /app
  9. volumes:
  10. - ./:/app
  11. environment:
  12. MYSQL_HOST: mysql
  13. MYSQL_USER: root
  14. MYSQL_PASSWORD: secret
  15. MYSQL_DB: todos
  16. mysql:
  17. image: mysql:8.0.28
  18. volumes:
  19. - todo-mysql-data:/var/lib/mysql
  20. environment:
  21. MYSQL_ROOT_PASSWORD: secret
  22. MYSQL_DATABASE: todos
  23. volumes:
  24. todo-mysql-data:

注意事项:

  1. 网络这块貌似是自动按照服务名映射到对应socket了
  2. app的绑定挂载这里,不是使用$(pwd)了,而是./代指当前目录

    常用命令

    docker

    [docker exec](https://docs.docker.com/engine/reference/commandline/exec/) -it container_name command:在容器container_name中执行command

    docker compose

    docker-compose -f docker-compose.dev.yml [up](https://docs.docker.com/compose/reference/up/) -d
    左选项列表:
    -f:另指定使用的dockercompose文件名。
    右选项列表:
    -d:不占用当前终端显示日志等,在背后运行。

    docker scan

    Linux

    通过nvm使用和管理nodejs/npm

    通过nvm use node使用最新的node和npm版本。
    常用命令:
    nvm ls-remote查看可安装的node版本
    nvm ls查看已经安装的node版本
    nvm install <version>安装特定版本的node
    nvm use <version>切换使用特定node版本
    此外,通过nodenpm--version命令查看现在使用的版本