目录

为什么你的电脑需要 Docker?

安装前的准备

系统要求一览

硬件配置建议

跨平台安装实战

Linux 系统安装(以 Ubuntu 为例)

Windows系统安装

如何查看自己的系统类型?

开启 Hyper-V

更换安装地址

你可能遇到的问题?

macOS系统安装

方法一:图形化安装

方法二:通过Homebrew Cask安装

常见问题与解决方案

问题1:安装后启动,鲸鱼图标一直转圈

问题2:容器无法启动,提示端口被占用

问题4:运行 docker 命令提示权限不足

问题5:旧版本卸载不干净导致新安装失败

结语:准备好拥抱容器化


本指南将为你提供一份从零开始的 Docker 保姆级安装教程,涵盖 Linux、Windows 和 macOS 主流操作系统。

为什么你的电脑需要 Docker?

在开始安装之前,我们先花一分钟聊聊 Docker 能为你带来什么。简单来说,Docker 允许你将应用程序及其所有依赖项(代码、运行时、系统工具、库等)打包成一个标准化的单元,称为“容器”。与传统虚拟机相比,容器更加轻量、启动更快(秒级),且资源利用率更高。

Docker的核心价值体现在三个方面:

  • 环境一致性:彻底消除“开发环境能跑,测试环境就崩”的尴尬,实现开发、测试、生产环境无缝衔接。

  • 资源隔离性:每个容器独立运行,应用之间不会相互干扰,有效管理依赖冲突。

  • 部署敏捷性:配合微服务架构,可以极大地提升应用的交付速度。有案例显示,采用 Docker 后某电商平台的部署时间从30分钟缩短至2分钟,服务器资源利用率提升40%。

安装前的准备

在正式开始安装命令之前,我们需要先确认你的“坐骑”——也就是操作系统,是否做好了准备。不同的系统,骑乘的方式略有不同。

系统要求一览

操作系统 推荐版本 关键要求
Linux Ubuntu 24.04 LTS, CentOS Stream 9 内核版本 ≥ 5.4;需要 curl、gnupg 等依赖
Windows Windows 11 / Windows 10 (专业版/企业版) 启用 WSL 2 和 Hyper-V;至少 4GB 内存
macOS macOS Sonoma (14.x) 及以上 至少 4GB 内存;Apple Silicon (M1/M2/M3) 用户需安装 Rosetta

硬件配置建议

  • 内存:至少 4GB(生产环境建议 8GB+)。

  • 存储:预留 50GB 以上磁盘空间用于存放镜像和容器。

跨平台安装实战

好了,确认坐骑状态良好后,我们就开始正式的安装之旅。这里将分别介绍 Linux、Windows 和 macOS 下的安装方法。

Docker官网:https://www.docker.com/

Linux 系统安装(以 Ubuntu 为例)

Linux 是 Docker 的原生运行环境,体验最佳。我们主要采用最安全、最可控的包管理器安装方式,步骤如下:

步骤1:卸载旧版本

打开终端,为了避免冲突,先清除系统中可能存在的旧版本 Docker。

步骤2:设置 Docker 的 APT 源 这是最关键的一步,我们将添加 Docker 官方的软件源,以便安装最新版本。考虑到国内网络环境,这里以使用阿里云镜像源为例,速度会快很多。

# 安装必要的依赖
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release

# 创建密钥存放目录
sudo mkdir -p /etc/apt/keyrings

# 添加 Docker 的 GPG 密钥(使用阿里云源)
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 设置稳定版仓库(使用阿里云源)
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

步骤3:安装 Docker 引擎

更新包索引并安装 Docker 和相关组件。

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

这里安装的 docker-compose-plugin 是 Docker Compose 的插件版本,现在推荐使用 docker compose 命令(中间有空格)来代替传统的 docker-compose

步骤4:验证安装

运行 Hello World 镜像,如果看到欢迎信息,说明安装成功。

sudo docker run hello-world

步骤5:可选但推荐的操作

  • 以非 root 用户运行 Docker:默认情况下,docker 命令需要 sudo 权限。为了避免每次输入 sudo,可以将当前用户添加到 docker 组:

sudo usermod -aG docker $USER
newgrp docker # 或注销重新登录

配置镜像加速器:由于众所周知的原因,直接从 Docker Hub 拉取镜像可能很慢。可以通过配置 daemon.json 文件使用国内加速器。

sudo nano /etc/docker/daemon.json

输入以下内容(以阿里云为例,你需要注册阿里云容器服务获取专属加速地址):

{
  "registry-mirrors": ["https://<你的专属加速器ID>.mirror.aliyuncs.com"]
}

然后重启 Docker 服务:

sudo systemctl daemon-reload
sudo systemctl restart docker

Windows系统安装

如何查看自己的系统类型?

Win+I → 系统 → 关于

  • 看系统类型:

  • 基于 x64 的处理器 → AMD64

  • 基于 ARM 的处理器 → ARM64

下载完成后不要直接打开,如果直接打开会默认下载在C:\Program Files下,如果你的C盘内存不是很充足建议下载其他盘符。

另外这里需要特别说明的是虚拟化技术。它允许你的电脑创建“虚拟机”,而Docker在Windows上正是通过轻量级虚拟机来运行Linux容器的。

开启 Hyper-V

在Windows上安装Docker,你会频繁听到这两个词。简单理解:

  • WSL 2(Windows Subsystem for Linux 2):就像一个极度精简的“Linux运行环境”,与Windows深度集成,资源占用小,启动快,是目前最推荐的方式,也是Docker官方主推的后端。

  • Hyper-V:是Windows专业版自带的“虚拟机旗舰店”,功能强大但资源开销较大。如果你的电脑是专业版/企业版,Docker Desktop可以基于它运行。

结论:无论你是什么Windows版本,我们都优先使用 WSL 2 模式。

打开控制面板---->点击程序--->点击启用或关闭Windows功能

不同电脑或许会有不一样。

更换安装地址

找到你的安装包位置,打开命令行窗口,执行以下命令进行安装,将 --installation-dir 后的路径替换为你想要的安装位置:

"Docker Desktop Installer.exe" install --accept-license --installation-dir="D:\Program Files\Docker"

你还可以同时指定镜像和数据的存储位置,以进一步节省 C 盘空间:

"Docker Desktop Installer.exe" install --accept-license --installation-dir="D:\Program Files\Docker" --wsl-default-data-root="D:\DockerData"

打开Docker Desktop,进行正常登录or注册即可。

验证安装:

# 查看Docker版本
docker version

# 运行测试容器
docker run hello-world

后续使用就和Linux大致一样了。

你可能遇到的问题?

是你的WSL太老了,打开命令行复制粘贴即可wsl --update,等他自动跑完。


Windows 下 Docker Desktop 拉取镜像超时的问题,核心原因是默认的 docker.io 境外源网络不通。

1.先配置国内镜像加速(解决超时)

在 Windows 上配置 Docker 镜像加速:

  • 打开 Docker Desktop,点击右上角的 Settings(齿轮图标)。

  • 在左侧菜单选择 Docker Engine

  • 将配置文件修改为以下内容,添加国内镜像源:

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "registry-mirrors": [
    "https://mirror.baidubce.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com"
  ]
}
  • 点击 Apply & Restart 保存并重启 Docker。

这三个镜像源都是国内稳定可用的,优先使用百度、中科大、网易的镜像,能彻底解决 TLS handshake timeout 问题。

如果依然失败(备选方案)

如果所有镜像源都拉取失败,可以尝试:

  1. 切换手机热点,排除当前网络限制。

  2. 检查 Windows 防火墙或杀毒软件,看是否拦截了 Docker 的网络请求。

  3. 直接下载你需要的安装包。

macOS系统安装

如果你使用的是搭载M系列芯片的Mac(M1/M2/M3/M4),有两点需要注意:

  1. 下载正确的版本:Docker官方会自动识别你的芯片类型,但手动下载时请务必选择“Apple Silicon”版本,而不是“Intel Chip”版本 。

  2. 关于Rosetta 2:虽然现在Rosetta 2不再是强制要求,但如果你需要使用一些仅支持x86_64架构的命令行工具,建议提前安装:

softwareupdate --install-rosetta

这个命令会在终端中运行,按提示同意协议即可 。

macOS上安装Docker主要有两种方式:图形化拖拽安装适合大多数用户,Homebrew Cask安装适合喜欢终端操作的同学,我们分别介绍。

方法一:图形化安装

这是最简单、最直观的安装方式,全程只需拖拽几下鼠标。

步骤1:下载Docker Desktop安装包

打开浏览器,访问Docker官方下载页面:https://www.docker.com/products/docker-desktop/

点击蓝色的“Download for Mac”按钮,系统会自动识别你的芯片类型并开始下载对应的 Docker.dmg 文件 。文件大小约500-600MB,下载时间取决于你的网速。

步骤2:安装Docker Desktop

  1. 找到下载好的 Docker.dmg 文件(通常在“下载”文件夹),双击打开。

  2. 会弹出一个窗口,左边是Docker的鲸鱼图标,右边是你的“Applications”文件夹图标。

  3. 关键一步:用鼠标将左边的Docker图标拖拽到右边的Applications文件夹图标上 。

  4. 等待文件拷贝完成,这个过程通常只需要几十秒。

步骤3:启动Docker Desktop

  1. 打开“启动台”(Launchpad),找到刚安装的Docker图标(蓝色鲸鱼),点击启动。

  2. 首次启动时,系统会弹窗提示“Docker Desktop想要接收键盘输入...”之类的权限请求,点击“允许”。

  3. 接着会要求输入你的Mac登录密码,以安装必要的特权帮助组件 。

  4. 随后会出现Docker订阅服务协议窗口,阅读后点击“Accept”接受 。

步骤4:等待引擎启动

接受协议后,Docker Desktop会开始启动引擎。你可以在屏幕右上角的菜单栏看到一个鲸鱼图标,它会一直动来动去,表示正在启动中。首次启动可能需要3-5分钟,请耐心等待 。当鲸鱼图标静止不动时,说明Docker已经就绪。

方法二:通过Homebrew Cask安装

如果你更喜欢在终端中完成一切,Homebrew Cask是最好的选择。不过需要注意,如果你之前用其他方式安装过Docker,可能会遇到冲突 。

Homebrew 的 Cask 已经支持 Docker for Mac,因此可以很方便的使用 Homebrew Cask 来进行安装(推荐):

# 通过Homebrew Cask安装
brew install --cask docker

# 启动Docker应用程序
open /Applications/Docker.app

验证安装:

# 检查Docker状态
docker info

# 查看系统信息
docker system info

然后配置镜像加速器,就和windows版差不多了。

常见问题与解决方案

问题1:安装后启动,鲸鱼图标一直转圈

现象:Docker Desktop启动后,菜单栏的鲸鱼图标一直动来动去,始终无法稳定。

可能原因:可能是旧版本残留或组件损坏。如果版本在4.32-4.36之间,可能存在已知的证书问题 。

解决方法:

  1. 尝试重启电脑,很多时候重启能解决80%的问题。

  2. 如果重启无效,可以执行完整重装 :

brew update
brew reinstall --cask docker
问题2:容器无法启动,提示端口被占用

现象:运行 docker run -p 8080:80 nginx 之类的命令时,提示端口无法绑定。

可能原因:macOS Big Sur及更新版本中,某些低端口(如55555)被系统预留 。此外,如果宿主机上已经有其他程序占用了该端口(如本地运行的Nginx、Apache等),也会导致冲突。

解决方法:

  1. 更换映射端口,例如将 8080:80 改为 8081:80

  2. 检查哪些程序占用了端口:sudo lsof -i :8080,然后根据PID杀掉对应进程。

  3. 在Docker Desktop设置中,Advanced → Allow privileged port mapping(允许特权端口映射)勾选上 。

问题4:运行 docker 命令提示权限不足

现象:运行 docker ps 等命令时,提示 Got permission denied

可能原因:这在macOS上比较少见,但如果你是通过命令行安装且配置有误,可能会遇到。

解决方法:确保Docker Desktop已经完全启动。在macOS上,Docker命令通常不需要 sudo,如果提示权限问题,先检查Docker Desktop状态 。

问题5:旧版本卸载不干净导致新安装失败

现象:安装过程中提示各种文件冲突。

解决方法:使用Docker Desktop自带的卸载功能,或者手动清理残留 :

# 停止所有Docker进程
sudo pkill -i docker

# 移除帮助工具
sudo rm /Library/PrivilegedHelperTools/com.docker.vmnetd
sudo rm /Library/PrivilegedHelperTools/com.docker.socket

# 然后重新安装

结语:准备好拥抱容器化

Docker为应用的容器化运行提供了完整的工具链,从环境搭建到容器管理,再到数据持久化,构建了现代化的应用部署体系。

一份常用的Docker容器一键启动配置文件:compose.ymal
数据卷映射可以进行更改,本配置文件是将容器数据映射到D:/DockerData/...,根据个人需求可以进行更改。


services:
  redis:
    image: redis:latest
    container_name: redis-service
    restart: always
    ports:
      - "6379:6379"
    volumes:
      - D:/DockerData/redis/data:/data
      - D:/DockerData/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
    environment:
      TZ: Asia/Shanghai
    command: redis-server /usr/local/etc/redis/redis.conf

  rabbitmq:
    image: rabbitmq:4-management
    container_name: rabbitmq-service
    restart: always
    ports:
      - "5672:5672"
      - "15672:15672"
    volumes:
      - D:/DockerData/rabbitmq/data:/var/lib/rabbitmq
    environment:
      TZ: Asia/Shanghai
      RABBITMQ_DEFAULT_USER: admin
      RABBITMQ_DEFAULT_PASS: 123456

  mysql:
    image: mysql:8.0
    container_name: mysql-service
    restart: always
    ports:
      - "3306:3306"
    volumes:
      - D:/DockerData/mysql/data:/var/lib/mysql
      - D:/DockerData/mysql/conf:/etc/mysql/conf.d
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      TZ: Asia/Shanghai
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

  postgres:
    image: postgres:16
    container_name: postgres-service
    restart: always
    ports:
      - "5432:5432"
    volumes:
      - D:/DockerData/postgres/data:/var/lib/postgresql/data
      - D:/DockerData/postgres/conf:/etc/postgresql/conf.d
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: 123456
      POSTGRES_DB: postgres
      TZ: Asia/Shanghai
    command: -c shared_buffers=256MB -c max_connections=200

  elasticsearch:
    image: elasticsearch:8.11.3
    container_name: elasticsearch-service
    restart: always
    ports:
      - "9210:9200"
      - "9300:9300"
    volumes:
      - D:/DockerData/elasticsearch/data:/usr/share/elasticsearch/data
      - D:/DockerData/elasticsearch/plugins:/usr/share/elasticsearch/plugins
    environment:
      - discovery.type=single-node
      - ES_JAVA_OPTS=-Xms512m -Xmx1g
      - TZ=Asia/Shanghai
      - xpack.security.enabled=false

  minio:
    image: minio/minio:RELEASE.2025-04-08T15-41-24Z
    container_name: minio-service
    restart: always
    ports:
      - "9000:9000"
      - "9001:9001"
    volumes:
      - D:/DockerData/minio/data:/data
    environment:
      MINIO_ROOT_USER: minioadmin
      MINIO_ROOT_PASSWORD: minioadmin123
      TZ: Asia/Shanghai
    command: server /data --console-address ":9001"

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐