乐于分享
好东西不私藏

Docker 教程 2 — Docker 安装与配置

Docker 教程 2 — Docker 安装与配置

Docker 教程 2 — Docker 安装与配置(Ubuntu/Debian)

概念讲解

上一篇我们搞清楚了 Docker 是什么、容器和虚拟机的区别。今天进入实操第一步——把 Docker 装起来。

Docker 分为两个版本:

  • • Docker Engine (CE):社区免费版,命令行工具,适合服务器和开发环境,本文安装的就是这个。
  • • Docker Desktop:带图形界面的桌面版,适合 macOS / Windows / Linux 桌面用户,下一篇会单独讲。

⚠️ Ubuntu 自带的 docker.io 包通常版本较旧,强烈建议用 Docker 官方源安装,才能获得最新功能和安全补丁。

安装完成后还会介绍一些基础配置:镜像加速、非 root 用户权限、开机自启等。这些配置做好了,后面的学习会顺畅很多。

代码示例

1. 卸载旧版本(如有)

sudo apt remove -y docker docker-engine docker.io containerd runc 2>/dev/null

2. 安装依赖

sudo apt updatesudo apt install -y ca-certificates curl gnupg

3. 添加 Docker 官方 GPG 密钥

sudo install -m 0755 -d /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/ubuntu/gpg | \  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgsudo chmod a+r /etc/apt/keyrings/docker.gpg

4. 添加 Docker 官方源

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

💡 如果你用的是 Debian,把上面 URL 中的 ubuntu 换成 debian 即可。

5. 安装 Docker Engine

sudo apt updatesudo apt install -y docker-ce docker-ce-cli containerd.io \  docker-buildx-plugin docker-compose-plugin

docker-compose-plugin 是新版 Compose V2,以 docker compose(无连字符)的方式调用,取代了旧的独立 docker-compose 命令。

6. 验证安装

docker --version# Docker version 27.x.x, build xxxxxxxdocker compose version# Docker Compose version v2.x.xsudo docker run hello-world# 看到 "Hello from Docker!" 就说明安装成功

7. 非 root 用户免 sudo 运行

默认只有 root 和 docker 组成员才能运行 Docker 命令。把你的用户加入 docker 组:

sudo usermod -aG docker $USER

重新登录(或重启)后生效。验证:

docker run hello-world   # 不需要 sudo 了

8. 配置镜像加速(国内用户)

国内拉取 Docker Hub 镜像经常超时,配置镜像加速器可以大幅改善:

sudo tee /etc/docker/daemon.json <<'EOF'{  "registry-mirrors": [    "https://mirror.ccs.tencentyun.com",    "https://registry.docker-cn.com"  ]}EOFsudo systemctl daemon-reloadsudo systemctl restart docker

9. 设置开机自启

Docker 服务默认已开机自启,但容器本身不会。如果希望某个容器随系统启动:

docker run -d --restart=always --name my-app nginx

常用 --restart 策略:

策略
含义
no
默认,不自动重启
on-failure
非零退出码时重启
always
总是重启(包括手动 stop 后重启)
unless-stopped
类似 always,但手动 stop 的不会重启

实战场景

场景一:新服务器初始化

拿到一台全新的 Ubuntu 云服务器,第一件事就是跑上面 1-6 步装好 Docker,然后配好镜像加速。整个过程 5 分钟搞定。

场景二:团队统一环境

写一个一键安装脚本,新人入职直接跑脚本,避免「我机器上能跑你那不行」的经典问题:

#!/bin/bash# install-docker.shset -eecho ">>> 安装 Docker..."# ... 上面的步骤 1-6 ...echo ">>> 配置镜像加速..."# ... 步骤 8 ...echo ">>> 完成!请重新登录以使用免 sudo 的 docker 命令"

常见坑点

  1. 1. 用了 Ubuntu 自带的 docker.io 包:版本可能很旧(差好几个大版本),缺少 buildx 等新特性。一定要用 Docker 官方源。
  2. 2. usermod -aG docker 后没重新登录:组变更只在新登录会话生效,su - $USER 或重新 SSH 连接即可,不用重启机器。
  3. 3. 国内 pull 镜像超时:不配镜像加速的话,拉个 nginx 镜像可能等半天。步骤 8 的加速配置一定要做。
  4. 4. --restart=always 的坑:手动 docker stop 的容器会在机器重启后又跑起来,如果你不想这样,用 unless-stopped 更合理。
  5. 5. Debian 用户直接复制 Ubuntu 的命令:APT 源 URL 里的 ubuntu 要改成 debian,否则会报 404 Not Found。

关注我,获取更多实用工具和技术分享。



往期文章:
Docker 教程 1 — Docker 是什么?容器 vs 虚拟机

相关学习资料