记一次不太顺利的Docker重装

#记录工作

一、前言

默认情况下,Windows系统上Docker Desktop 安装在 :C:\Program Files\Docker\Docker;

目前正常下载能下载到最新版本是到v4.39.0,实际已经能找到v4.40.0版本来进行修复安装;

建议尽量不要改变Docker的默认安装位置。

二、踩坑记录

(一)踩坑一

"/DIR="命令指定安装位置(新手请避坑,仅供记述避免踩坑,不足之处请多多指教)

之前我一直用"/DIR="命令指定Docker的安装目录到D:\Program\Docker目录,然后稳定的运行了一段时间后,Docker不能启动引擎了,可以打开Docker Desktop,但是各种折腾也没能再正常工作;

复制代码
#进入Docker安装程序的下载位置
cd /d E:\Downloads\Programs
#复制完整文件名
Docker Desktop Installer.exe
#修改安装命令为(引号要保留):.\+"完整文件名"+空格/DIR="期望安装路径"
.\"Docker Desktop Installer.exe" /DIR="D:\Program\Docker"

(二) 踩坑二

"mklink /j"命令指定安装位置(新手请避坑,仅供记述避免踩坑,不足之处请多多指教)

后来我又尝试了"mklink /j"命令,尝试将Docker的C盘安装目录通过创建链接的方式指定到D盘D:\Program Files\Docker目录;

还把

复制代码
C:\Users\<用户名>\.docker

C:\Users\<用户名>\AppData\Local\Docker

这两个文件夹也通过"mklink /j"命令分别指定到:

复制代码
D:\Program\.docker

D:\Program\Docker

完整的命令和流程记录如下(新手请避坑,仅供记述避免踩坑,不足之处请多多指教):

复制代码
1、Docker安装路径设置
mklink /j "C:\Program Files\Docker" "D:\Program Files\Docker"

#安装后启动,然后查找并记录下Docker在C盘生成的文件夹路径:
C:\Users\love\.docker
C:\Users\love\AppData\Local\Docker

2、备份C盘中的.docker文件夹
#然后分别复制一份到其它地方备份,比如备份到E:\Downloads\Other\
 #用命令复制备份或手动复制粘贴进行备份:
C:\Users\love\.docker
robocopy "C:\Users\love\.docker" "E:\Downloads\Other\.docker" /E
#然后的目录结构:
"E:\Downloads\Other\.docker"

3、备份C盘AppData\Local中的Docker文件夹
 #用命令复制备份或手动复制粘贴进行备份:
C:\Users\love\AppData\Local\Docker
robocopy "C:\Users\love\AppData\Local\Docker" "E:\Downloads\Other\Docker" /E
#然后的目录结构:
"E:\Downloads\Other\Docker"

4、为C:\Users\love\.docker创建链接
C:\Users\love\.docker
准备创建硬链接
 #通过直接复制源文件夹的形式在目标文件夹生成同名文件夹:
robocopy "C:\Users\love\AppData\Local\Docker" "D:\Program\.docker" /E
删除目标路径:
rmdir /s /q "C:\Users\love\.docker"
删除链接路径:
rmdir /s /q "D:\Program\.docker"
mklink /J "C:\Users\love\.docker" "D:\Program\.docker"

5、为C:\Users\love\AppData\Local\Docker创建链接
C:\Users\love\AppData\Local\Docker
准备创建硬链接
 #通过直接复制源文件夹的形式在目标文件夹生成同名文件夹:
robocopy "C:\Users\love\AppData\Local\Docker" "D:\Program\Docker" /E
删除目标路径:
rmdir /s /q "C:\Users\love\AppData\Local\Docker"
删除链接路径:
rmdir /s /q "D:\Program\Docker"
mklink /J "C:\Users\love\AppData\Local\Docker" "D:\Program\Docker"

6、将备份的文件夹复制到目标目录
robocopy "E:\Downloads\Other\.docker" "D:\Program\.docker" /E
robocopy "E:\Downloads\Other\Docker" "D:\Program\Docker" /E

结果么, Docker Desktop打开后一直无法启动引擎,然后也是各种报错,最后是通过翻找官方文档,找到v4.40.0版本然后安装后才修复。

修复后发现,"mklink /j"命令指定到的D:\Program Files\Docker目录已经被清空了,并且删除了"mklink /j"符号链接,恢复安装到默认的位置C:\Program Files\Docker\Docker。

三、重装及修复

通过安装更高版本修复。

V4.39.0覆盖安装没能修复,通过覆盖安装V.4.40.0版本实现修复。

修复后,

C:\Users\<用户名>\.docker

C:\Users\<用户名>\AppData\Local\Docker

这两个目录的"mklink /j"命令硬链接没有被撤消,仍然有效:

但安装目录已重置为 C:\Program Files\Docker\Docker。

这是在PyCharm的项目文件夹中,用终端运行命令的截图,可以看到Docker命令已经能正常运行。

四、记录小结

(一)一般情况下,不要改动Docker的默认安装路径;

(二)C盘用户文件夹下的.docker文件夹和C盘用户文件夹下的AppData\Local\Docker(镜像储存文件夹)可以通过"mklink /j"命令安全指定到其他盘符;

(三)但是,镜像储存文件夹的修改和指定最好用Docker Desktop界面操作相对会更简单一些;

(四)如果出现问题,除了一些修复命令和方法外,还可以通过用更新的版本覆盖安装的方式修复;

(五)如果Docker Desktop运行状态正常,但终端中无法顺利执行docker的拉取命令,那就要尝试更换不同的终端,推荐使用PyCharm中的终端,虽然在PyCharm中也是手动选择的终端路径,但PyCharm集成的功能似乎能解决一些纯终端运行命令拉取异常的错误,比如输出网络或代理配置错误等。(或者可以尝试vs code)

(六)检查代理网络和配置文件中代理地址条目的配置情况,手动编辑的代理文件时常会因为网络原因或条目失效或者端口问题导致镜像拉取失败;

(七)配置变更后尽量及时重启Docker及相关服务,桌面右下角隐藏图标里有Docker图标,鼠标右键可以看到"restart"重启服务按钮。实在不行就重启计算机,重启后须等待Docker相关服务启动并稳定运行之后,再执行拉取镜像的操作。

V.4.40.0版本及全部发行版本下载页面:

全部版本 发行说明 |Docker 文档

相关推荐
续写烂尾15 分钟前
贴片 SD NAND、eMMC、TF 卡规格怎么定?硬件工程师选型清单
运维·服务器·网络
迪康妍妍21 分钟前
终端管控实操:封堵网盘与IM外发通道的落地思路
运维·网络·安全·架构·安全性测试
sxgzzn25 分钟前
如何选择合适的开关柜在线监测工具?
运维·重构·无人机·开关柜局放在线监测·光伏运维管理系统
zxcvb1531 小时前
运维经验分享:监控网页更新内容的几种思路
运维
云飞云共享云桌面2 小时前
设计师共享单台图形服务器,解决 SolidWorks大装配卡顿难题
运维·服务器·3d·自动化·电脑·制造
张张123y3 小时前
后端第九课:部署上线(把你的 FastAPI 后端真正跑起来给别人用)
python·docker·部署·fastapi
无足鸟ICT3 小时前
【RHCA+】RPM包命名规则
linux·运维·服务器
迪康Defender3 小时前
终端安全运维:浅谈迪康端点安全一体化管理系统工具箱实用能力
运维·安全·信息可视化·自动化·运维开发·学习方法·远程工作
广东帝工智能安防3 小时前
航道数智化升级实战:基于“云-网-数-智“架构的信息化基础设施建设方案
大数据·运维·人工智能
爱吃香菜的初学者3 小时前
十六.Linux——多线程(2)
linux·运维·开发语言