开始之前:您需要了解什么?

在着手获取Docker之前,我们首先需要明确一些基础概念,这将帮助您理解所下载内容的具体作用,并确保您选择正确的版本和路径。

1.1 下载的是什么?

当您提到“下载Docker”时,通常是指以下两种主要产品之一,具体取决于您的使用场景和操作系统:

  • Docker Desktop (适用于Windows和macOS)

    这是一个易于安装的应用程序,它包含了运行、构建和管理容器所需的所有组件。它提供了一个直观的图形用户界面(GUI),以及一个集成了Docker Engine、Docker CLI(命令行接口)、Docker Compose和Kubernetes(可选)的完整开发环境。对于桌面用户和开发者而言,这是最常用且推荐的选择。

    • Windows版Docker Desktop通常依赖于WSL 2 (Windows Subsystem for Linux 2) 或 Hyper-V 虚拟机技术来运行Linux容器。WSL 2是当前官方推荐且性能更好的后端。
    • macOS版Docker Desktop则利用macOS的Hypervisor框架来创建和管理轻量级虚拟机,以运行Docker Engine。
  • Docker Engine (适用于Linux服务器)

    这指的是Docker的核心运行时组件,它是一个轻量级的、开源的容器化平台。Docker Engine通常安装在Linux服务器上,通过命令行进行操作。它不包含桌面GUI,专注于提供容器的生命周期管理(构建、运行、停止、删除)。如果您是在云服务器、虚拟机或物理服务器上部署应用程序,Docker Engine是您的首选。

    Docker Engine的安装通常还会伴随以下组件:

    • Docker CLI:与Docker守护进程(daemon)交互的命令行工具。
    • Containerd:一个符合CNCF(云原生计算基金会)OCI(开放容器倡议)运行时规范的高级容器运行时。Docker Engine使用它来管理容器的生命周期。
    • RunC:一个低级的容器运行时,负责实际创建和运行容器。

1.2 为什么您需要下载Docker?

下载并使用Docker,主要是为了解决软件开发、测试和部署中的诸多痛点,并带来显著的效率提升和一致性保证:

  • 环境一致性(“在我机器上能跑”)

    Docker将应用程序及其所有依赖项(库、配置、环境)打包到一个独立的容器中。这意味着无论容器在哪里运行(开发者的笔记本、测试服务器、生产环境),它都能以相同的方式运行。这彻底解决了“在我机器上能跑,但在你机器上就不行”的经典问题。

  • 简化开发与部署流程

    开发者可以快速地在本地搭建复杂的多服务开发环境(如数据库、消息队列、Web服务器等),而无需在本地系统上安装和配置这些服务。部署时,只需将容器镜像推送到注册中心,然后在目标机器上拉取并运行即可,大大简化了部署的复杂性。

  • 资源隔离与效率

    每个Docker容器都运行在一个隔离的环境中,不会相互干扰。与传统虚拟机相比,容器共享宿主机的操作系统内核,因此更加轻量、启动更快,并且占用更少的系统资源。

  • 快速迭代与测试

    容器的快速启动和销毁特性使得开发和测试周期得以加速。开发者可以快速创建、测试和废弃环境,而不会污染或影响宿主系统。

1.3 我是否需要为下载Docker付费?

对于大多数个人用户、小型团队、教育机构以及开源项目,下载和使用Docker是免费的。然而,Docker公司对其产品采取了分层许可模式:

  • Docker Desktop

    对于个人使用、教育机构、非营利组织以及员工人数少于250人或年收入低于1000万美元的小型企业,Docker Desktop可以免费使用。对于规模更大或有特定商业需求的企业,Docker提供了付费的商业订阅计划(如Team、Business和Enterprise),这些计划通常包含高级功能、专业支持和合规性保障。在下载页面,您会看到相关的许可条款。

  • Docker Engine

    Docker Engine本身是开源的,并遵循Apache 2.0许可协议,因此在Linux服务器上下载和使用Docker Engine是完全免费的。

在下载之前,请务必查看Docker官方网站上最新的许可协议,以确保您的使用情况符合其免费或付费条款。

在哪里可以安全、官方地下载Docker?

为了确保您下载到的是正版、安全且最新的Docker软件,强烈建议您始终通过官方或官方推荐的渠道获取。

2.1 官方下载渠道

  • Docker官方网站

    这是获取Docker Desktop(适用于Windows和macOS)以及查看最新Docker Engine安装指南的首选和最权威的来源。

    • Docker Desktop下载页面:通常位于docker.com/products/docker-desktop。在这里,您可以直接找到适用于您的操作系统的安装包(.exe for Windows, .dmg for macOS)。
    • Docker Engine安装指南页面:位于docs.docker.com/engine/install/。此页面提供了详细的安装教程,适用于各种Linux发行版(如Ubuntu, Debian, CentOS, Fedora等),这些指南会指导您如何通过系统自带的包管理器来安装Docker Engine,这是Linux上最推荐的安装方式。
  • Linux系统包管理器

    对于Linux用户,Docker官方为主要发行版提供了预编译的包,您可以通过各自的包管理器(如apt, yum, dnf, pacman)来安装Docker Engine。这是Linux上安装Docker Engine最常见、最稳定且最推荐的方法,因为它能确保依赖关系正确解决,并且易于更新和管理。

2.2 避免非官方渠道

请务必避免从非官方或不明来源的网站下载Docker安装包。这些来源可能包含篡改过的、不安全或过时的软件,给您的系统带来安全风险。

如何下载与安装Docker?分平台详细教程

本节将为您详细介绍如何在不同的操作系统上下载和安装Docker。

3.1 Windows操作系统

3.1.1 前置条件

  • 操作系统版本:Windows 10 64-bit: Home 或 Pro 21H2 (build 19044) 或更高版本,或者 Windows 11。
  • WSL 2 Backend (推荐):确保您的Windows系统已启用并安装了WSL 2。这是Docker Desktop在Windows上的默认和推荐后端,性能更好。如果没有安装,Docker Desktop安装程序通常会引导您完成安装,或者您可以手动按照微软的WSL安装指南进行操作。
  • Hyper-V Backend (旧版或备选):如果您的Windows版本不支持WSL 2或您不想使用WSL 2,Docker Desktop也可以使用Hyper-V。您需要在BIOS/UEFI中启用虚拟化(Intel VT-x 或 AMD-V),并在Windows功能中启用Hyper-V。
  • 内存与磁盘空间:至少4GB RAM,推荐8GB以上;至少20GB的空闲磁盘空间。

3.1.2 下载与安装步骤

  1. 下载安装包

    访问Docker官方网站的Docker Desktop下载页面:https://www.docker.com/products/docker-desktop

    点击“Download for Windows”按钮,下载Docker Desktop Installer.exe文件。

  2. 运行安装程序

    找到下载好的Docker Desktop Installer.exe文件,双击运行。

  3. 按照安装向导提示操作

    安装向导会提示您选择是否启用WSL 2后端(强烈推荐勾选)。保持默认设置通常是最好的选择。

    点击“OK”或“Next”继续安装。安装程序会自动完成所有必要组件的安装。

  4. 等待安装完成

    安装过程可能需要几分钟。完成后,点击“Close”退出安装程序。

  5. 首次启动Docker Desktop

    安装完成后,Docker Desktop会自动启动或您可以在开始菜单中找到并启动它。

    首次启动时,它可能需要一些时间来初始化和下载必要的组件(如WSL 2发行版或Hyper-V虚拟机)。

    您可能需要同意Docker的服务条款。如果是商业用途,请确保您了解并遵守相关的许可政策。

3.1.3 配置WSL 2(推荐)

如果Docker Desktop提示WSL 2未正确配置,或者您想确保最佳性能,请按照以下步骤检查或配置WSL 2:

  1. 确保WSL已安装并更新

    打开PowerShell或命令提示符(以管理员身份运行),输入以下命令:

    wsl --install

    如果WSL已安装,此命令会提示您更新WSL内核:

    wsl --update

  2. 将WSL 2设置为默认版本

    输入以下命令:

    wsl --set-default-version 2

  3. 启用WSL 2集成

    打开Docker Desktop设置(系统托盘图标右键 -> Settings),导航到“Resources” -> “WSL Integration”,确保您的Linux发行版(例如Ubuntu)已启用。

3.2 macOS操作系统

3.2.1 前置条件

  • 操作系统版本:macOS 10.15 Catalina 或更高版本。
  • 处理器架构:Intel芯片或Apple Silicon (M1/M2/M3)。下载时请确保选择与您的Mac架构匹配的版本。
  • 内存与磁盘空间:至少4GB RAM,推荐8GB以上;至少20GB的空闲磁盘空间。

3.2.2 下载与安装步骤

  1. 下载安装包

    访问Docker官方网站的Docker Desktop下载页面:https://www.docker.com/products/docker-desktop

    根据您的Mac处理器类型(Intel或Apple Silicon),点击相应的“Download for Mac”按钮,下载Docker.dmg文件。

  2. 运行安装程序

    找到下载好的Docker.dmg文件,双击打开。

    这将打开一个安装窗口,其中包含Docker图标和“Applications”文件夹的快捷方式。

  3. 将Docker应用程序拖动到“Applications”文件夹

    将Docker图标拖动到“Applications”文件夹图标上。

  4. 启动Docker Desktop

    安装完成后,打开“Applications”文件夹,双击“Docker”图标启动Docker Desktop。

    首次启动时,macOS可能会要求您确认是否允许此应用程序运行,点击“Open”。

    Docker Desktop会请求系统权限以安装必要的网络组件和特权工具,您可能需要输入您的macOS用户密码。

  5. 等待初始化完成

    Docker Desktop首次启动时会进行初始化,这可能需要一些时间来设置其内部虚拟机和组件。系统托盘中的Docker鲸鱼图标会显示动画直到完全启动。

    您可能需要同意Docker的服务条款。

3.3 Linux操作系统(以Ubuntu为例)

在Linux上,Docker Engine通常通过官方提供的仓库进行安装,这确保了您可以获取到稳定且经过测试的版本,并且易于更新。以下以Ubuntu为例,其他发行版(如Debian、CentOS、Fedora等)的步骤类似,主要是在包管理器命令和仓库配置上有所不同,但基本逻辑一致。

3.3.1 卸载旧版本(如果存在)

如果您之前安装过旧版本的Docker(例如docker.io, docker-engine),建议先将其卸载以避免冲突:

sudo apt-get remove docker docker-engine docker.io containerd runc

此命令不会删除您已有的镜像、容器、卷或网络。如果您需要完全清除它们,请在卸载后手动删除相关目录:

sudo rm -rf /var/lib/docker

sudo rm -rf /var/lib/containerd

3.3.2 设置Docker仓库

为了从官方Docker仓库安装,您需要添加GPG密钥并设置仓库:

  1. 更新apt包索引并安装必要的包以允许apt通过HTTPS使用仓库:

    sudo apt-get update

    sudo apt-get install ca-certificates curl gnupg

  2. 添加Docker的官方GPG密钥:

    sudo install -m 0755 -d /etc/apt/keyrings

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

  3. 设置仓库:

    使用以下命令设置稳定版仓库。请根据您的Ubuntu版本替换$(. /etc/os-release && echo "$VERSION_CODENAME")部分(例如,对于Ubuntu 22.04 LTS是jammy,对于20.04 LTS是focal)。

    echo \

    "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \

    "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \

    sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

  4. 再次更新apt包索引:

    在添加新的仓库后,再次更新包索引以包含Docker包:

    sudo apt-get update

3.3.3 安装Docker Engine

现在可以安装Docker Engine、CLI、Containerd和Docker Compose插件:

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

安装完成后,Docker服务会自动启动。您可以使用以下命令检查其状态:

sudo systemctl status docker

如果服务没有运行,可以手动启动它:

sudo systemctl start docker

并设置其在系统启动时自动运行:

sudo systemctl enable docker

3.3.4 配置非root用户权限

默认情况下,只有root用户或具有sudo权限的用户才能运行Docker命令。为了避免每次都使用sudo,您可以将您的用户添加到docker组:

  1. 创建docker组(如果不存在):

    sudo groupadd docker

  2. 将当前用户添加到docker组:

    sudo usermod -aG docker $USER

  3. 重新登录或重启终端:

    为了使组成员更改生效,您需要注销并重新登录您的会话,或者直接重启终端会话。此步骤非常重要,否则您仍然需要使用sudo

3.3.5 验证安装

运行一个简单的测试容器来验证Docker是否正确安装并运行:

docker run hello-world

如果一切正常,您应该会看到一条消息,说明Docker已成功运行了“hello-world”镜像。

3.3.6 其他Linux发行版简述

  • Debian:与Ubuntu的安装过程非常相似,命令基本相同。
  • CentOS/RHEL/Fedora (使用dnfyum)

    您需要安装yum-utils,添加Docker的dnf/yum仓库,然后使用sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin进行安装。配置非root用户权限的步骤与Ubuntu类似。

  • Arch Linux (使用pacman)

    Docker通常在官方仓库中可用,通过sudo pacman -S docker安装。需要手动启动和启用docker.service

无论哪种Linux发行版,都强烈建议参考Docker官方文档(docs.docker.com/engine/install/)中针对您具体发行版的详细指南。

下载安装后:您需要做些什么?

成功下载并安装Docker只是第一步。接下来,您需要验证安装、进行基本配置,并了解如何开始使用容器。

4.1 首次运行与验证

无论您是Windows、macOS还是Linux用户,在安装完成后,验证Docker是否正常工作是至关重要的一步。最常用的方法是运行官方的hello-world镜像:

docker run hello-world

当您首次运行此命令时,Docker会执行以下操作:

  1. 检查本地是否有所需的hello-world镜像。如果没有,它会从Docker Hub(Docker的官方镜像仓库)拉取(下载)该镜像。
  2. 使用该镜像创建一个新的容器。
  3. 运行容器内部的程序,该程序会打印一条包含“Hello from Docker!”等内容的欢迎信息。
  4. 容器执行完毕后自动退出。

如果一切顺利,您会看到一条类似以下内容的输出:

Unable to find image 'hello-world:latest' locally

latest: Pulling from library/hello-world

... (下载进度) ...

Status: Downloaded newer image for hello-world:latest

Hello from Docker!

This message shows that your installation appears to be working correctly.

... (其他诊断信息) ...

这表明您的Docker安装已成功,并且可以正常与Docker Engine通信。

4.2 配置Docker

根据您的具体需求和网络环境,您可能需要对Docker进行一些配置。

资源分配

  • Docker Desktop (Windows/macOS)

    在Docker Desktop的设置(Settings)中,导航到“Resources”部分。您可以在这里调整分配给Docker虚拟机的CPU核心数、内存大小和交换空间大小。根据您运行的容器数量和复杂性,适当增加这些资源可以提升性能。例如,如果您运行的应用程序需要大量内存,请确保为Docker分配足够的内存。

  • Docker Engine (Linux)

    在Linux上,Docker Engine直接使用宿主机的资源,因此没有独立的资源分配设置。您可以通过Linux自身的系统管理工具来监控和管理资源使用。

镜像加速器

由于网络环境原因,从Docker Hub拉取镜像有时会非常缓慢。配置镜像加速器可以显著改善下载速度。许多云服务提供商(如阿里云、腾讯云、DaoCloud等)都提供了免费的Docker镜像加速服务。

  • Docker Desktop (Windows/macOS)

    打开Docker Desktop设置(Settings),导航到“Docker Engine”选项卡。在右侧的JSON配置中,找到"registry-mirrors"字段(如果没有则添加),然后将加速器地址添加进去。例如:

    {
      "registry-mirrors": [
        "https://你的加速器地址.mirror.aliyuncs.com"
      ],
      "insecure-registries": [],
      "debug": true,
      "experimental": false
    }

    点击“Apply & Restart”保存并重启Docker。

  • Docker Engine (Linux)

    编辑或创建Docker守护进程的配置文件/etc/docker/daemon.json。如果文件不存在,请创建它。添加或修改registry-mirrors字段:

    sudo vim /etc/docker/daemon.json
    {
      "registry-mirrors": ["https://你的加速器地址.mirror.aliyuncs.com"]
    }

    保存文件后,重启Docker服务以使更改生效:

    sudo systemctl daemon-reload

    sudo systemctl restart docker

代理设置

如果您的网络需要通过HTTP/HTTPS代理才能访问外部网络,您需要在Docker中配置代理设置。

  • Docker Desktop (Windows/macOS)

    在Docker Desktop设置(Settings)中,导航到“Proxies”选项卡。您可以选择“System Proxy”使用系统代理设置,或“Manual Proxy”手动配置HTTP/HTTPS代理地址。

  • Docker Engine (Linux)

    通常通过在/etc/systemd/system/docker.service.d/http-proxy.conf(如果文件不存在则创建)中添加环境变量来配置:

    [Service]
    Environment="HTTP_PROXY=http://proxy.example.com:8080"
    Environment="HTTPS_PROXY=http://proxy.example.com:8080"
    Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.somecompany.com"

    保存文件后,重新加载systemd配置并重启Docker服务:

    sudo systemctl daemon-reload

    sudo systemctl restart docker

4.3 开始您的第一个容器

现在您已经安装并配置好了Docker,是时候运行一个更实用的容器了。例如,我们可以运行一个Nginx Web服务器:

docker run --name my-nginx -p 80:80 -d nginx

这个命令的含义是:

  • docker run:运行一个容器。
  • --name my-nginx:为容器指定一个名称,方便以后引用。
  • -p 80:80:将宿主机的80端口映射到容器的80端口。这意味着您可以通过访问宿主机的80端口来访问容器内部Nginx服务。
  • -d:以后台(分离)模式运行容器,容器会在后台运行,不会占用您的终端。
  • nginx:指定要使用的镜像名称。如果本地没有该镜像,Docker会自动从Docker Hub拉取最新版的Nginx镜像。

运行此命令后,您可以在浏览器中访问http://localhost(或您Linux服务器的IP地址),应该能看到Nginx的欢迎页面。
要停止并移除此容器:

docker stop my-nginx

docker rm my-nginx

要列出当前正在运行的容器:

docker ps

要列出本地所有镜像:

docker images

4.4 常见问题与解决方案

在使用Docker的过程中,您可能会遇到一些常见问题。

  • 虚拟化未启用(Windows/macOS)

    问题描述:Docker Desktop启动失败,提示需要启用虚拟化技术。

    解决方案:进入您的电脑BIOS/UEFI设置,查找并启用“Intel VT-x”或“AMD-V”(也可能称为“Virtualization Technology”或“SVM Mode”)。保存设置并重启电脑。Windows用户还需要确保在“启用或关闭Windows功能”中勾选了Hyper-V或Windows虚拟机平台。

  • WSL2相关问题(Windows)

    问题描述:Docker Desktop提示WSL 2未正确安装或更新,或性能不佳。

    解决方案:按照微软官方WSL安装指南,确保WSL 2已正确安装并更新到最新版本。在PowerShell中运行wsl --updatewsl --set-default-version 2。检查Docker Desktop设置中的“WSL Integration”是否已启用。

  • 权限问题(Linux)

    问题描述:在Linux上运行docker命令时,提示“Got permission denied while trying to connect to the Docker daemon socket”。

    解决方案:这是因为您的用户没有足够的权限访问Docker守护进程的Unix套接字。将您的用户添加到docker组(如前面“配置非root用户权限”部分所述),然后注销并重新登录您的会话,或者重启系统。

  • 网络连接问题

    问题描述:无法从Docker Hub拉取镜像,或容器内部无法访问外部网络。

    解决方案

    • 检查网络连接是否正常。
    • 如果在中国大陆,强烈建议配置镜像加速器。
    • 如果您的网络需要代理,请正确配置Docker的代理设置。
    • 检查防火墙规则,确保Docker所需的端口(如映射到宿主机的端口)没有被阻塞。

4.5 如何更新与卸载Docker?

4.5.1 更新Docker

  • Docker Desktop (Windows/macOS)

    Docker Desktop通常会自动检测并提示您有新版本可用。您只需点击弹窗中的“Update and Restart”按钮即可。也可以在Docker Desktop的设置中手动检查更新。

  • Docker Engine (Linux)

    通过您系统的包管理器来更新。例如,对于Ubuntu/Debian:

    sudo apt-get update

    sudo apt-get upgrade docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

    对于CentOS/Fedora:

    sudo dnf update docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

    更新后,可能需要重启Docker服务:

    sudo systemctl restart docker

4.5.2 卸载Docker

  • Docker Desktop (Windows)

    在“控制面板” -> “程序和功能”中找到“Docker Desktop”,右键选择“卸载/更改”。或者在Windows 10/11的“设置” -> “应用”中找到并卸载。卸载程序会提示您是否保留数据或完全清除。

  • Docker Desktop (macOS)

    将“Applications”文件夹中的“Docker”应用程序拖动到废纸篓即可。如果您想完全清除所有相关文件(包括镜像、容器数据、卷、网络配置等),可以在卸载前在Docker Desktop的设置中找到“Troubleshoot” -> “Clean / Purge data”选项,或手动删除~/Library/Containers/com.docker.docker等相关目录。

  • Docker Engine (Linux)

    通过系统包管理器卸载Docker Engine组件。例如,对于Ubuntu/Debian:

    sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

    这会卸载软件包,但不会删除镜像、容器、卷或用户创建的配置文件。要完全删除所有数据:

    sudo rm -rf /var/lib/docker

    sudo rm -rf /var/lib/containerd

    同时移除Docker的仓库配置和GPG密钥(可选):

    sudo rm /etc/apt/sources.list.d/docker.list

    sudo rm /etc/apt/keyrings/docker.gpg

    sudo apt-get update

通过遵循本指南,您应该能够顺利地下载、安装、配置和开始使用Docker,为您的开发和部署工作带来便利和效率。