十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Docker Desktop 安装与镜像加速:从零启动第一个容器

Docker Desktop 安装与镜像加速:从零启动第一个容器 Docker Desktop 安装与镜像加速从零启动第一个容器适用人群第一次接触 Docker或需要在 Windows、macOS、Linux 桌面环境中重新安装 Docker Desktop 的开发者。核对日期2026 年 9 月 2 日。本文以 Docker Desktop 4.89.0 为写作基线实际安装时请优先选择官网提供的最新稳定版。本文目标安装 Docker Desktop正确配置 Docker Hub 镜像加速运行hello-world再启动一个可通过浏览器访问的 Nginx 容器。很多人第一次使用 Docker最容易卡在三个地方Docker Desktop、Docker Engine 和 Docker CLI 到底是什么关系软件明明安装成功了拉取镜像却一直超时docker run执行完了但不知道容器是否真的启动也不知道该怎么访问。这篇文章从零开始解决这些问题。全程不要求提前掌握容器原理但会把关键边界讲清楚哪些配置是真正生效的哪些“国内镜像地址”可能已经失效以及 Windows、macOS、Linux 三个平台之间有什么区别。1. 先把几个概念说清楚Docker 不是一个单独的命令而是一套工具。日常开发时最常接触的是下面这些组件。名称作用可以怎样理解Docker Desktop桌面端安装包集成 Engine、CLI、Compose、Dashboard 等组件Docker 的桌面工作台Docker Engine负责创建和管理镜像、容器、网络、卷真正干活的后台服务Docker CLI提供docker run、docker ps等命令与 Engine 沟通的命令行客户端Docker Compose使用 YAML 文件编排多个容器多容器项目的启动器Image镜像只读的应用模板包含程序及其运行依赖类似“安装包 运行环境”Container容器镜像运行后的实例由镜像启动的进程Registry镜像仓库保存和分发镜像的服务镜像的应用商店或制品仓库Registry Mirror代理并缓存 Docker Hub 镜像Docker Hub 的拉取加速入口需要特别注意Docker 容器共享的是 Linux 内核能力。即使你在 Windows 或 macOS 上使用 Docker DesktopLinux 容器通常也不是直接运行在宿主系统内核上而是运行在 Docker Desktop 管理的轻量 Linux 环境中。这也是为什么 Docker Desktop 不只是一个图形界面。它还负责虚拟化、网络转发、文件共享、资源限制和版本更新。2. 安装前检查别急着一路点“下一步”2.1 确认授权范围Docker Desktop 对个人使用、教育用途、非商业开源项目以及符合条件的小型企业通常可以免费使用。大型企业和政府机构等场景可能需要付费订阅。授权条款和企业规模边界可能调整。公司设备或商业项目安装前应让组织管理员核对最新的 Docker Subscription Service Agreement不要只根据旧文章判断。2.2 打开硬件虚拟化Windows 和 Linux 版 Docker Desktop 都依赖硬件虚拟化。进入 BIOS 或 UEFI 后相关选项可能显示为Intel Virtualization Technology、Intel VT-xAMD-V、SVM ModeVirtualization Technology。如果虚拟化没有开启Docker Desktop 可能安装成功但 Engine 无法启动。2.3 确认 CPU 架构下载前先确认设备架构常见 Intel、AMD 处理器通常选择 x86_64 或 AMD64Apple M 系列芯片选择 Apple Silicon 或 ARM64不要把 macOS 的 Intel 安装包装到 Apple Silicon 设备上也不要混用 Windows ARM64 与 AMD64 安装包。2.4 预留资源Docker 官方系统要求会随版本变化。作为开发机的实用建议可以至少准备8 GB 内存20 GB 可用磁盘空间稳定网络受支持且仍在维护期内的操作系统版本。这里的磁盘空间不是安装包大小。镜像层、容器可写层、构建缓存和数据卷都会持续占用空间。3. Windows使用 WSL 2 后端安装 Docker Desktop对大多数 Windows 开发者来说WSL 2 是默认且推荐的 Linux 容器后端。它的文件系统和网络行为比传统 Hyper-V 模式更贴近日常 Linux 开发。3.1 系统要求与边界安装前应确认使用 Docker 官方当前支持的 Windows 10 或 Windows 11 版本WSL 版本不低于 Docker 当前要求官方文档目前要求 WSL 2.1.5 或更高版本设备具有至少 8 GB 内存并已启用硬件虚拟化Windows Server 不是 Docker Desktop 的受支持平台。如果只运行普通 Linux 容器不需要专门切换到 Windows 容器模式。本文也以 Linux 容器为主。3.2 检查和安装 WSL以管理员身份打开 PowerShellwsl--version wsl--status如果系统提示没有安装 WSL可以执行wsl--install安装完成后按系统提示重启。已有 WSL 的设备建议先更新wsl--update还可以检查已安装的发行版wsl--list--verboseVERSION列应为2。如果某个发行版仍是 WSL 1可按实际名称转换例如wsl--set-versionUbuntu 23.3 下载并校验安装包只从 Docker Desktop 官方下载页 获取安装包。不要使用不明网盘中的旧版本或二次封装版本。下载后可以在 PowerShell 中计算 SHA-256Get-FileHash.\DockerDesktopInstaller.exe-Algorithm SHA256把结果与 Docker 发布说明中对应版本、对应平台的校验值比对。文件名和路径以本机实际情况为准。3.4 执行安装双击安装程序保持“Use WSL 2 instead of Hyper-V”或含义相同的选项启用。新版 Docker Desktop 已推荐按当前用户安装默认目录通常位于%LOCALAPPDATA%\Programs\DockerDesktop安装完成后启动 Docker Desktop阅读并接受许可协议。首次启动可能需要一段时间创建内部 Linux 环境。看到界面底部或状态区域显示Engine running才表示后台 Engine 已经可用。3.5 验证安装打开新的 PowerShell 窗口docker--version docker version docker compose version docker context show重点看docker version只有Client说明命令行已安装但 Engine 没有响应同时显示Client和Server才说明客户端已经连上 Enginedocker context show在 Docker Desktop 环境中通常显示desktop-linux。4. macOS区分 Apple Silicon 和 Intel4.1 确认芯片类型点击菜单栏左上角的苹果图标进入“关于本机”显示 Apple M1、M2、M3、M4、M5 等下载 Apple Silicon 版本显示 Intel下载 Intel 版本。Docker Desktop 当前通常支持最新 macOS 大版本及其之前两个主要版本。老系统无法安装新版时不建议长期固定在已停止维护的 Docker Desktop 版本应优先升级操作系统。4.2 下载与校验从 Docker Desktop for Mac 官方文档 进入对应芯片版本的下载入口。假设安装包位于“下载”目录可计算 SHA-256cd~/Downloads shasum-a256Docker.dmg再与官方发布说明中的校验值比对。4.3 安装和启动双击Docker.dmg把 Docker 图标拖入Applications文件夹。然后从“应用程序”启动 Docker。首次启动时系统可能询问是否允许安装网络或权限组件。按照 Docker Desktop 的说明授权即可不要给来源不明的程序输入管理员密码。Apple Silicon 设备通常不依赖 Rosetta 运行 Docker Desktop 本身。不过少数仍只提供 x86_64 版本的可选命令行工具或镜像可能需要 Rosetta。只有在明确遇到兼容性需求时再执行softwareupdate --install-rosetta安装完成后验证dockerversiondockercompose versiondockercontext show如果需要查看镜像是否同时支持 ARM64 和 AMD64可以执行dockerbuildx imagetools inspect nginx:alpine5. Linux先决定要 Docker Desktop 还是 Docker EngineLinux 用户经常问“系统本身就能运行 Docker Engine为什么还要安装 Docker Desktop”答案取决于使用方式只需要命令行、服务器式运行和更少资源占用优先考虑原生 Docker Engine希望使用 Dashboard、Extensions、内置 Compose、统一升级和桌面管理可以选择 Docker Desktop。需要理解一个关键区别Linux 版 Docker Desktop 仍运行在它管理的虚拟机中并使用desktop-linux上下文。Docker Desktop 内的镜像和容器与宿主机原生 Docker Engine 的镜像和容器相互独立。5.1 检查 KVMDocker Desktop for Linux 需要 KVM、QEMU、systemd 以及受支持的桌面环境。先检查 CPU 是否暴露虚拟化能力grep-E-c(vmx|svm)/proc/cpuinfo输出大于0通常表示 CPU 提供虚拟化标志。继续检查 KVM 设备ls-l/dev/kvm把当前用户加入kvm组sudousermod-aGkvm$USER执行后需要注销并重新登录组权限才会刷新。不要使用chmod 777 /dev/kvm作为长期修复方案。5.2 Ubuntu 安装示例Docker 当前文档列出的 Ubuntu 桌面支持范围会更新。本文核对时官方列出了 Ubuntu 24.04 LTS 和 26.04 LTS 的 x86_64 环境。安装前仍应查看 Ubuntu 安装说明。从官网下载当前 DEB 包后在包所在目录执行sudoaptupdatesudoaptinstall./docker-desktop-amd64.deb启动 Docker Desktopsystemctl--userstart docker-desktop如需随登录自动启动systemctl--userenabledocker-desktop5.3 Fedora 安装示例本文核对时官方文档列出的支持基线为 Fedora 43 或更高版本的 x86_64 桌面环境。下载 RPM 后执行sudodnfinstall./docker-desktop-x86_64.rpm启动方式相同systemctl--userstart docker-desktop5.4 避免与原生 Docker Engine 冲突如果宿主机已经运行原生 Docker Engine可能与 Docker Desktop 争用端口或消耗重复资源。官方建议在使用 Docker Desktop 时停止原生 Enginesudosystemctl stopdockerdocker.socket containerd查看当前上下文dockercontextlsdockercontext show切换到 Docker Desktopdockercontext use desktop-linux切回宿主机原生 Enginedockercontext use default不要在没检查上下文的情况下删除镜像或容器。你以为在清理 Desktop实际可能正在操作宿主机 Engine。6. 为什么拉取 Docker 镜像会慢执行下面的命令时dockerpull nginx:alpineDocker 需要完成域名解析、TLS 握手、清单读取和多个镜像层下载。速度慢或超时可能来自到 Docker Hub 的国际链路不稳定DNS 解析异常公司代理、防火墙或安全软件拦截Docker Hub 匿名拉取频率受限镜像体积大、层数多配置的第三方镜像站已停止同步Docker Desktop 代理设置与 Engine 镜像设置混淆。所以“拉不动”不等于“必须随便找一个镜像地址”。加速之前先区分问题类型能减少很多无效操作。7. 2026 年国内镜像加速应该怎样选网上常见的教程会直接列出十几个公共镜像地址。这个做法现在不够严谨原因是公共服务可能限流、停止同步、只对内网开放甚至长期返回旧标签。更稳妥的优先级是公司或团队维护的 Docker Hub pull-through cache云厂商控制台为账号或区域分配的 HTTPS 加速地址自建 registry mirror并配置缓存、访问控制和监控临时公共地址仅用于短期验证不作为生产依赖。7.1 华为云 SWR华为云官方当前仍提供镜像加速器说明。登录 SWR 控制台后可从“镜像资源 → 镜像中心 → 镜像加速器”查看当前区域和账号可用的地址。不要从旧博客复制别人的专属地址。应以自己控制台显示的内容为准。官方说明见配置镜像加速器。7.2 阿里云 ACR阿里云当前官方文档已经明确提示传统 Docker 官方镜像加速器停止同步最新镜像后可能出现拉取失败或latest不是最新版本的情况。因此不应再把旧的 ACR 专属加速地址当成默认通用方案。具体限制和替代建议应查看实时文档加速拉取 Docker 官方镜像。7.3 腾讯云内网地址腾讯云文档中的https://mirror.ccs.tencentyun.com主要面向腾讯云内网资源。普通家庭宽带、公司外网或本地 Docker Desktop 不应默认认为它可用。7.4 为什么本文使用占位地址后文统一使用https://your-accelerator-host你必须把它替换为组织或云厂商当前分配给你的真实 HTTPS 地址。占位符不能直接使用。8. 在 Docker Desktop 中配置 Registry Mirror8.1 找到 Docker Engine 配置打开 Docker Desktop点击右上角齿轮进入Settings左侧选择Docker Engine右侧会显示 Docker daemon 的 JSON 配置修改完成后点击Apply Restart。8.2 最小配置如果当前配置为空对象可以填写{registry-mirrors:[https://your-accelerator-host]}必须把your-accelerator-host替换成真实主机名。8.3 与已有配置合并不要为了加入镜像地址而覆盖已有字段。假设原来已经设置构建并发数和日志轮转应合并成一个合法 JSON 对象{builder:{gc:{defaultKeepStorage:20GB,enabled:true}},log-driver:json-file,log-opts:{max-file:3,max-size:10m},registry-mirrors:[https://your-accelerator-host]}JSON 有几个容易踩坑的规则字段名和字符串必须使用英文双引号最后一个属性或数组元素后面不能有多余逗号同一级不能出现两个同名字段不支持//或/* */注释必须保留原有配置除非确认不再需要优先使用 HTTPS不要为了省事关闭证书校验。8.4 镜像加速和代理不是一回事Docker Desktop 的代理设置负责 HTTP/HTTPS 出站通信registry-mirrors则告诉 Engine 从哪个缓存入口获取 Docker Hub 内容。公司网络需要代理时可能两者都要配置但不要互相替代。8.5 如何恢复如果配置后 Engine 无法启动回到Settings → Docker Engine删除本次新增的registry-mirrors字段确保剩余内容仍是合法 JSON再次点击Apply Restart。普通配置错误不需要直接执行 Factory Reset。恢复出厂会移除本地设置并可能影响镜像、容器和数据应当作为最后手段。9. 验证镜像加速是否被 Engine 接受Docker Desktop 重启后执行dockerinfo在输出中查找Registry Mirrors: https://your-accelerator-host/Windows PowerShell 可筛选相关行docker info|Select-String-PatternRegistry Mirrors-Context 0,4macOS 或 Linux 可执行dockerinfo|grep-A4Registry Mirrors然后做一次实际拉取dockerpull hello-world:latest需要严谨地区分两件事docker info显示地址证明 Engine 接受了配置实际流量是否命中缓存需要结合服务商控制台统计、反向代理日志或网络观测判断。镜像加速器通常只代理 Docker Hub。下面这些仓库不是一回事docker.io Docker Hubregistry mirror 通常针对这里 ghcr.io GitHub Container Registry quay.io Red Hat Quay配置 Docker Hub mirror不会自动加速所有第三方 Registry也不能代替私有仓库登录。10. 启动第一个容器hello-world执行dockerrun--namehello-docker hello-world:latest这条命令背后发生了四件事CLI 把运行请求发送给 Docker EngineEngine 检查本地是否存在hello-world:latest本地没有时从 Registry 或配置的 mirror 拉取镜像Engine 创建容器、执行容器中的程序并把输出显示在终端。看到Hello from Docker!说明镜像拉取、容器创建和标准输出链路基本正常。查看所有容器dockerps-a你会发现hello-docker状态是Exited。这不是失败。hello-world只打印一段信息主进程完成后容器自然退出。查看日志dockerlogs hello-docker删除测试容器dockerrmhello-docker11. 启动一个真正可访问的 Nginx 容器hello-world运行时间太短。接下来启动一个常驻的 Web 服务dockerrun-d--nameweb-demo-p127.0.0.1:8080:80 nginx:alpine参数含义如下参数含义docker run创建并启动容器-d后台运行终端不持续占用--name web-demo给容器设置固定名称-p 127.0.0.1:8080:80把宿主机本地 8080 端口映射到容器 80 端口nginx:alpine使用体积较小的 Nginx Alpine 镜像本文把端口绑定在127.0.0.1只允许本机访问比默认暴露到所有网卡更适合本地练习。检查运行状态dockerpsdockerport web-demodockerlogs--tail20web-demo浏览器打开http://127.0.0.1:8080看到Welcome to nginx!说明容器中的 Nginx 正在运行端口映射也已生效。11.1 在容器中执行命令查看 Nginx 版本dockerexecweb-demo nginx-v进入容器的 Shelldockerexec-itweb-demoshAlpine 镜像通常提供sh不一定提供bash。进入后可以查看 Nginx 首页文件ls-l/usr/share/nginx/htmlexit11.2 容器生命周期停止容器dockerstop web-demo再次启动dockerstart web-demo停止并删除dockerstop web-demodockerrmweb-demo也可以在明确不再需要它时强制删除dockerrm-fweb-demo删除容器不会自动删除镜像。查看镜像dockerimagels12. 使用 Docker Desktop Dashboard 管理容器命令行适合自动化Dashboard 适合观察。打开 Docker Desktop 后常用页面包括Containers查看状态、端口、日志、文件、资源使用情况Images查看本地镜像、标签、大小并启动容器Volumes管理持久化数据卷Builds查看 BuildKit 构建记录Settings配置资源、代理、Engine、文件共享与启动行为。在Containers页面找到web-demo可以直接点击端口打开浏览器也可以查看日志、停止、启动或删除容器。建议初学阶段同时使用命令行和 Dashboard命令行帮助理解对象和状态Dashboard 方便直观看到操作结果。13. 常见故障与处理方法13.1Cannot connect to the Docker daemon先执行dockerversiondockercontext show如果只有 Client 信息确认 Docker Desktop 已启动并显示 Engine running等待首次初始化完成检查当前 context 是否正确Linux 检查是否误切换到未运行的defaultcontextWindows 检查 WSL 2 是否正常。13.2 Windows 卡在 Starting先更新并重启 WSLwsl--update wsl--shutdown再重新打开 Docker Desktop。如果仍失败检查虚拟化是否开启、系统版本是否受支持以及安全软件是否阻断虚拟网络。不要把下面的命令当成普通修复手段wsl--unregister distribution-name它会删除对应 WSL 发行版及其数据属于破坏性操作。13.3pull access denied常见原因镜像名称或标签拼写错误仓库是私有仓库尚未执行docker login当前账号没有读取权限。先核对完整镜像名例如registry.example.com/team/app:1.4.213.4i/o timeout、TLS 超时或 DNS 失败建议按顺序排查浏览器是否能正常访问网络系统时间是否正确DNS 是否能解析 Registry 域名公司是否要求设置代理registry-mirrors地址是否仍有效HTTPS 证书是否可信且未过期临时移除 mirror 后能否直接访问 Docker Hub。不要为了绕过报错直接把安全地址改成 HTTP也不要全局关闭 TLS 校验。13.5 Docker Hub 返回429 Too Many Requests这通常是拉取频率限制不是本地 JSON 写错。可以登录 Docker Hub 账号后再拉取使用组织内部缓存避免 CI 重复拉取相同基础镜像为构建流程设置合理缓存查看 Docker Hub 当前配额规则。13.6 Docker Engine JSON 无法应用常见错误包括中文引号、多余逗号、重复键和错误注释。把 JSON 复制到可信的本地校验器检查或先恢复到最小配置{}确认 Engine 能启动后再逐项加入配置。13.7 8080 端口被占用Windows PowerShellGet-NetTCPConnection-LocalPort 8080-ErrorAction SilentlyContinuemacOS 或 Linuxlsof-iTCP:8080-sTCP:LISTEN如果端口已被使用可以改成 8081dockerrun-d--nameweb-demo-p127.0.0.1:8081:80 nginx:alpine然后访问http://127.0.0.1:8081。13.8 Apple Silicon 出现平台不匹配先检查镜像清单dockerbuildx imagetools inspectimage-name:tag优先选择同时提供linux/arm64和linux/amd64的多架构镜像。确实只能运行 AMD64 镜像时可以显式指定dockerrun--platformlinux/amd64image-name:tag这可能依赖模拟性能通常低于原生 ARM64 镜像。13.9 Linux 看不到预期的镜像或容器先检查上下文dockercontextlsdockercontext showdesktop-linux和default连接的是不同 Engine。切换后看到的镜像、容器和卷可以完全不同。13.10 磁盘空间越来越大先查看占用dockersystemdf按对象逐项确认再做定向清理dockercontainer prunedockerimage prunedockerbuilder prune下面的命令会清理范围更广dockersystem prune-a--volumes它可能删除未使用镜像、停止的容器、构建缓存和未使用卷。卷里可能有数据库数据执行前必须确认备份和影响范围。14. 安全与稳定性建议14.1 不要暴露未加密的 Docker API不要为了“远程方便”开启未启用 TLS 的tcp://0.0.0.0:2375。能访问 Docker daemon 的用户通常可以创建高权限容器、挂载宿主目录风险接近宿主机管理员权限。14.2 不要把高权限参数当成通用修复遇到权限问题时不要条件反射地添加--privileged -v /:/host -v /var/run/docker.sock:/var/run/docker.sock这些参数会显著扩大容器权限。先明确程序需要哪一项能力再做最小授权。14.3 生产环境不要依赖漂移标签latest适合本文的入门验证但生产构建更适合固定经过测试的版本标签安全要求更高时可以固定 digestnginxsha256:digest固定 digest 能确保获取相同内容但也意味着安全更新不会自动进入需要建立定期升级和验证流程。14.4 不要把不稳定的公共镜像站写进团队模板团队配置应包含服务所有者可用性和容量监控TLS 证书管理缓存和清理策略上游同步与失效处理故障时回退方案。镜像加速解决的是分发链路不是镜像可信度。无论从哪里拉取都要核对镜像来源、标签、签名或 digest并持续做漏洞扫描。15. 完成检查清单按顺序确认下面各项Docker Desktop 来自官方网站安装包架构与设备一致Windows 已启用 WSL 2Linux 已启用 KVMDocker Desktop 显示 Engine runningdocker version同时显示 Client 和 Serverdocker compose version可以正常输出docker context show指向预期 Engine镜像加速地址来自当前有效的组织或云厂商配置Docker Engine JSON 可以通过校验docker info能看到Registry Mirrorshello-world输出Hello from Docker!web-demo显示为 Running浏览器能打开http://127.0.0.1:8080已理解容器、镜像、端口映射和 context 的区别测试结束后已按需停止或删除容器。16. 总结把 Docker Desktop 跑起来并不难真正重要的是建立一套可验证的操作顺序先检查操作系统、架构、虚拟化和授权再安装 Docker Desktop并用docker version验证 Client 与 Server镜像加速只使用当前可确认的地址不照搬过期公共列表用docker info检查配置再通过实际拉取验证先运行一次性hello-world再运行可持续访问的 Nginx遇到问题时按 Engine、网络、Registry、端口和平台架构逐层排查。完成这些步骤后你已经拥有一个可以用于 Node.js、Java、Go、Python、数据库和前端工程的本地容器环境。下一步可以继续学习 Dockerfile、数据卷、容器网络和 Docker Compose。官方参考资料Docker Desktop 产品与下载Docker Desktop Release Notes在 Windows 上安装 Docker Desktop在 macOS 上安装 Docker Desktop在 Linux 上安装 Docker Desktop在 Ubuntu 上安装 Docker Desktop在 Fedora 上安装 Docker DesktopDocker Desktop Settings 说明Docker Hub Registry Mirror 官方说明Docker CLIdocker runDocker CLIdocker info华为云 SWR配置镜像加速器阿里云 ACRDocker 官方镜像加速说明腾讯云Docker 镜像加速相关说明
返回列表