Docker KubernetesNotes

第 02 章:Docker 安装

zjc 于 2026-01-02 发布

这是《Docker 与 Kubernetes 零基础实战指南》的独立章节版。本章从概念、实操和生产排查三个视角展开,代码块保留了原书可直接运行的版本。 本章安装 Docker Desktop、Docker Engine,并梳理生产环境的目录规划、权限、代理、镜像加速和验证方法。

2.1 安装前检查

Linux 检查:

uname -a
cat /etc/os-release
df -h
docker --version

确认:

  1. 操作系统版本受支持;
  2. 内核版本满足当前 Docker 版本要求;
  3. 数据盘空间充足;
  4. 不与 Podman、containerd 旧配置冲突;
  5. 企业网络代理和证书策略明确。

2.2 Linux 安装

以 Ubuntu 官方仓库为例:

sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc

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

启动:

sudo systemctl enable --now docker
docker version
docker compose version

2.3 Windows 与 macOS

安装 Docker Desktop 后检查:

docker version
docker info
docker run --rm hello-world

桌面版适合学习开发,不建议作为生产服务端。Windows 还要确认 WSL2 或 Hyper-V 后端正常。

2.4 权限配置

把用户加入 docker 组:

sudo usermod -aG docker $USER

重新登录后生效。

注意:能访问 /var/run/docker.sock 约等于拥有宿主机高权限。生产构建机不应随意授予普通用户 docker 组权限,可选 rootless Docker 或受控 CI。

2.5 数据目录

默认 Docker 数据目录常在 /var/lib/docker。生产建议独立数据盘:

{
  "data-root": "/data/docker"
}

配置文件:

/etc/docker/daemon.json

重启:

sudo systemctl restart docker

查看:

docker info --format '{{.DockerRootDir}}'

2.6 镜像加速与代理

daemon.json 示例:

{
  "registry-mirrors": [
    "https://mirror.example.com"
  ]
}

构建代理:

sudo systemctl edit docker
[Service]
Environment="HTTP_PROXY=http://proxy.internal:7890"
Environment="HTTPS_PROXY=http://proxy.internal:7890"
Environment="NO_PROXY=localhost,127.0.0.1,.internal"

2.7 日志限制

避免容器日志无限增长:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "50m",
    "max-file": "5"
  }
}

已有容器需要重建后生效。

2.8 验证安装

docker info
docker run --rm hello-world
docker run -d --name nginx-test -p 8080:80 nginx:1.27
curl -I http://127.0.0.1:8080
docker rm -f nginx-test

常见问题:

问题 排查
permission denied docker 组或 sudo
cannot connect to daemon 服务、socket、WSL
pull timeout 网络、镜像源、代理
no space left data-root 磁盘
certificate error 企业 CA 配置

本章小结

安装 Docker 的关键是规划数据目录、日志上限、网络代理和权限边界。开发环境追求方便,生产环境必须控制 Docker Socket 和镜像来源。

思考题

  1. 为什么生产要独立规划 data-root
  2. docker 组权限有什么风险?
  3. 如何限制容器日志增长?
  4. 拉取镜像超时如何排查?
  5. Rootless Docker 适合什么场景?