Windows上安装Docker Desktop

文章描述了在Windows10上安装DockerDesktop时遇到的问题及解决方案,包括取消使用WSL2、启动DockerDesktop、配置镜像加速器以及因代理软件导致的Winsock问题和虚拟化错误。通过修改注册表解决Winsock问题并成功运行DockerDesktop。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运行环境

  • Windows 10
  • Docker Desktop 4.21.1

安装步骤

步骤1:

勾掉"Use WSL 2 instead of Hyper-V(recommended)"(原因见小插曲2章节

步骤2:

安装完成

步骤3:

运行Docker Desktop

 步骤4:

配置镜像加速器(可选)

配置文件目录:ProgramData\Docker\config\daemon.json(实际为USER_HOME/.docker/daemon.json)

查看


插曲

小插曲1

安装完成之后,运行docker version、docker info时,都提示"error during connect: this error may indicate that the docker daemon is not running",如下图所示

网上有人说需要启动docker daemon,使用DockerCli -SwitchDaemon可以启动,实际上并没有任何作用。

实际上只需要双击运行Docker Desktop即可。

小插曲2

看提示是跟WSL有关系,因为我安装的时候默认勾选了"Use WSL 2 instead of Hyper-V(recommended",实际上我只是启用了WSL这个windows功能,但是没有安装。

反复安装、重启电脑多次之后,我就放弃了。

***2023-08-17补充内容***

问题已解决。

因为之前没有安装wsl,这次我安装了Ubuntu-22.04 2,但是问题依然存在,而且出现了新问题:

经过搜索:

出现上述问题原因是使用代理软件,或游戏加速服务,winsock出现问题。

可以通过注册表的方式,从winsock中排除wsl即可。

将下列内容保存到文本文件中,修改为reg后缀,双击运行即可

Windows Registry Editor Version 5.00
 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinSock2\Parameters\AppId_Catalog\0408F7A3]
"AppFullPath"="C:\\Windows\\System32\\wsl.exe"
"PermittedLspCategories"=dword:80000000

问题解决,而且docker desktop也不再提示 Unexpected WSL error了。

小插曲3

即使勾掉WSL2,又换了一种提示😂🤣😢,虚拟化明明是启用了啊

反复安装、重启电脑多次之后,好了🐱‍🏍

小插曲4

这个提示到目前应该没有发现有影响,可忽略。

### 关于 avahi-daemon 的使用指南 #### 安装与配置 `avahi-daemon` 是一种基于 Zeroconf 标准的开源实现,主要用于在本地网络中自动发现服务和主机。以下是其安装、启动以及基本配置的相关说明: - **安装** 在大多数 Linux 发行版中,可以通过包管理器轻松安装 `avahi-daemon`。例如,在 Debian 和 Ubuntu 上可以执行以下命令来安装: ```bash sudo apt-get install avahi-daemon ``` 对于 Red Hat/CentOS/Fedora 用户,可以使用 yum 或 dnf 进行安装: ```bash sudo yum install avahi ``` - **启动与停止服务** 启动或停止 `avahi-daemon` 可以通过以下命令完成: ```bash sudo systemctl start avahi-daemon # 启动服务 sudo systemctl stop avahi-daemon # 停止服务 sudo systemctl restart avahi-daemon # 重启服务 ``` 如果希望开机时禁用此服务,可以运行以下命令: ```bash sudo systemctl disable avahi-daemon ``` - **防火墙设置** 默认情况下,某些操作系统可能启用了防火墙规则,阻止了 mDNS 流量(端口 5353)。为了使 `avahi-daemon` 正常工作,需开放相应端口: ```bash sudo firewall-cmd --add-port=5353/udp --permanent sudo firewall-cmd --reload ``` --- #### 常见问题及其解决方法 1. **无法解析 .local 主机名** 当尝试访问 `.local` 结尾的主机名失败时,可能是由于缺少必要的 DNS 解析支持。确保 `/etc/nsswitch.conf` 文件中有如下条目: ``` hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname ``` 若未找到上述内容,请将其添加并保存。 2. **与其他服务冲突** 某些环境中可能存在多个提供相同功能的服务(如 Samba),它们可能会干扰 `avahi-daemon` 的正常运行。此时应检查是否有重复绑定到 UDP 端口 5353 的进程,并停用不必要的服务。 3. **日志显示错误消息** 查看系统日志可以帮助诊断潜在问题。例如,使用 journalctl 工具查看最近的日志记录: ```bash journalctl -u avahi-daemon.service ``` 日志中的具体错误提示通常能指引解决问题的方向[^1]。 4. **跨平台兼容性** 虽然 Apple Bonjour 和 Avahi 都遵循相同的 Zeroconf 规范,但在特定场景下仍可能出现不一致行为。建议测试不同客户端之间的互操作性,必要时调整双方配置参数。 --- #### 示例代码片段 下面是一个简单的 Python 脚本示例,展示如何利用 `avahi-python` 库查询当前网络上的可用服务列表: ```python import dbus bus = dbus.SystemBus() server = dbus.Interface(bus.get_object('org.freedesktop.Avahi', '/'), 'org.freedesktop.Avahi.Server') def resolve_service(interface, protocol, name, stype, domain, flags): server.ResolveService( interface, protocol, name.encode(), stype.encode(), domain.encode(), dbus.UInt32(flags), reply_handler=lambda *args: print(args), error_handler=lambda e: print(f"Error resolving {name}: {e}") ) resolve_service(-1, -1, "_http._tcp", "", "local", 0) ``` 以上脚本会打印出所有 HTTP 类型的服务信息。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wsdhla

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值