三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Docker环境安装与配置全指南

Docker环境安装与配置全指南

1. Docker环境安装概述

在当今的软件开发与运维领域,容器化技术已经成为不可或缺的基础设施。作为最流行的容器平台,Docker能够将应用程序及其依赖打包成标准化的单元,实现"一次构建,随处运行"的目标。无论是开发环境的快速搭建、持续集成/持续部署(CI/CD)管道的构建,还是微服务架构的实施,Docker都扮演着关键角色。

我最初接触Docker是在2015年,当时为了解决开发环境与生产环境不一致的问题。经过多年实践,我发现一个正确安装和配置的Docker环境能够显著提高工作效率。本文将基于我在不同操作系统上的安装经验,分享最稳妥的Docker环境搭建方法,包括常见问题的解决方案和性能优化技巧。

2. 系统准备与前置条件

2.1 硬件与操作系统要求

Docker对硬件的要求相对较低,但在生产环境中仍需注意以下配置建议:

  • CPU:支持虚拟化技术(Intel VT-x或AMD-V),建议双核以上
  • 内存:至少4GB(开发环境),生产环境建议8GB以上
  • 存储:至少20GB可用空间,建议使用SSD提高性能

操作系统方面,Docker支持多种平台:

  • Linux:Ubuntu 20.04/22.04、CentOS 7/8、Debian 10/11等主流发行版
  • Windows:Windows 10/11 Pro/Enterprise/Education(64位)
  • macOS:macOS 10.15 Catalina及以上版本

提示:Windows家庭版无法直接安装Docker Desktop,需要安装WSL2或升级到专业版

2.2 系统更新与依赖检查

在安装Docker前,建议先更新系统并安装必要依赖:

# Ubuntu/Debian系统 sudo apt update && sudo apt upgrade -y sudo apt install -y apt-transport-https ca-certificates curl software-properties-common # CentOS/RHEL系统 sudo yum update -y sudo yum install -y yum-utils device-mapper-persistent-data lvm2

对于Linux系统,还需要检查内核版本(建议3.10以上):

uname -r

3. Docker安装方法详解

3.1 Linux系统安装

3.1.1 使用官方仓库安装(推荐)

这是最稳妥的安装方式,能确保获取最新稳定版本:

# 添加Docker官方GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 设置稳定版仓库 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 安装Docker引擎 sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
3.1.2 验证安装

安装完成后,运行以下命令验证:

sudo docker run hello-world

如果看到"Hello from Docker!"消息,说明安装成功。

3.2 Windows系统安装

3.2.1 安装WSL2(Windows Subsystem for Linux 2)

Docker Desktop for Windows依赖WSL2,安装步骤如下:

  1. 以管理员身份打开PowerShell
  2. 启用WSL功能:
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
  3. 启用虚拟机平台功能:
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  4. 重启计算机
  5. 下载并安装WSL2内核更新包
  6. 设置WSL2为默认版本:
    wsl --set-default-version 2
3.2.2 安装Docker Desktop
  1. 从Docker官网下载Docker Desktop for Windows安装包
  2. 双击安装包运行安装向导
  3. 安装完成后启动Docker Desktop
  4. 在系统托盘中确认Docker图标显示为运行状态

注意:首次启动可能需要几分钟时间初始化

3.3 macOS系统安装

3.3.1 使用Homebrew安装

对于习惯使用命令行的用户,推荐通过Homebrew安装:

brew install --cask docker
3.3.2 手动安装
  1. 从Docker官网下载Docker Desktop for Mac安装包
  2. 双击下载的.dmg文件
  3. 将Docker图标拖拽到Applications文件夹
  4. 从Launchpad启动Docker应用
  5. 在菜单栏中确认Docker图标显示为运行状态

4. 安装后配置与优化

4.1 非root用户权限配置

默认情况下,Docker需要sudo权限运行,这在实际使用中很不方便。可以通过以下步骤将当前用户加入docker组:

sudo groupadd docker sudo usermod -aG docker $USER newgrp docker

配置完成后,注销并重新登录即可不使用sudo运行docker命令。

4.2 镜像加速器配置

国内用户访问Docker Hub可能较慢,可以配置镜像加速器:

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://<your-mirror>.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker

常用镜像加速器:

  • 阿里云:需登录控制台获取专属加速地址
  • 中科大:https://docker.mirrors.ustc.edu.cn
  • 网易:https://hub-mirror.c.163.com

4.3 存储驱动选择

Docker支持多种存储驱动,根据文件系统选择最佳方案:

文件系统推荐驱动特点
ext4/xfsoverlay2性能好,稳定性高
btrfsbtrfs需要专用文件系统
aufsaufs旧版兼容

查看当前存储驱动:

docker info | grep "Storage Driver"

修改存储驱动需编辑/etc/docker/daemon.json:

{ "storage-driver": "overlay2" }

5. 常见问题与解决方案

5.1 安装失败排查

问题现象:安装过程中出现依赖错误或冲突

解决方案

  1. 清理旧版本残留:
    sudo apt remove docker docker-engine docker.io containerd runc sudo rm -rf /var/lib/docker sudo apt autoremove
  2. 确保系统已更新:
    sudo apt update && sudo apt upgrade -y
  3. 重新尝试安装

5.2 启动失败排查

问题现象:docker服务无法启动,报错"Failed to start Docker Application Container Engine"

解决方案

  1. 查看详细日志:
    journalctl -xe
  2. 常见原因及修复:
    • 存储驱动不兼容:修改daemon.json更换驱动
    • 磁盘空间不足:清理无用镜像或扩容
    • 端口冲突:检查是否有其他服务占用2375/2376端口

5.3 网络连接问题

问题现象:无法拉取镜像或容器无法访问外网

解决方案

  1. 检查DNS配置:
    cat /etc/resolv.conf
  2. 临时修改DNS:
    sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "dns": ["8.8.8.8", "114.114.114.114"] } EOF sudo systemctl restart docker
  3. 检查防火墙设置:
    sudo ufw status

6. 生产环境最佳实践

6.1 资源限制配置

为防止单个容器占用过多资源,可以设置限制:

docker run -it --cpus="1.5" --memory="512m" ubuntu
  • --cpus:限制CPU使用量(可以是小数)
  • --memory:限制内存使用量
  • --memory-swap:限制交换分区使用量

6.2 日志管理

默认情况下,Docker容器日志会无限增长,需要配置日志轮转:

sudo tee /etc/docker/daemon.json <<-'EOF' { "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } } EOF sudo systemctl restart docker

6.3 安全加固

  1. 禁止容器以root权限运行:
    docker run --user 1000:1000 my-image
  2. 启用内容信任:
    export DOCKER_CONTENT_TRUST=1
  3. 定期扫描镜像漏洞:
    docker scan my-image

7. 进阶配置与工具集成

7.1 Docker Compose安装

Docker Compose是管理多容器应用的工具,安装方法:

# Linux系统 sudo apt install docker-compose-plugin # 其他系统(Docker Desktop已包含) docker compose version

7.2 可视化工具Portainer

Portainer提供了友好的Web界面管理Docker环境:

docker volume create portainer_data docker run -d -p 8000:8000 -p 9443:9443 --name portainer \ --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ portainer/portainer-ce:latest

访问https://localhost:9443即可使用。

7.3 构建缓存优化

通过多阶段构建和合理利用缓存层提高构建效率:

# 第一阶段:构建环境 FROM node:16 as builder WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build # 第二阶段:运行环境 FROM nginx:alpine COPY --from=builder /app/dist /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]

构建时使用--cache-from参数复用缓存:

docker build --cache-from my-image:latest -t my-image:new .

8. 性能监控与调优

8.1 资源使用监控

查看容器资源使用情况:

docker stats

输出示例:

CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS c3f279d17e0a my-container 0.25% 156MiB / 1GiB 15.23% 1.12kB / 0B 0B / 0B 8

8.2 性能分析工具

使用cAdvisor监控容器性能:

docker run \ --volume=/:/rootfs:ro \ --volume=/var/run:/var/run:ro \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:ro \ --volume=/dev/disk/:/dev/disk:ro \ --publish=8080:8080 \ --detach=true \ --name=cadvisor \ gcr.io/cadvisor/cadvisor:v0.47.0

访问http://localhost:8080查看详细监控数据。

8.3 存储驱动性能比较

不同存储驱动的性能特点:

驱动类型写性能读性能空间效率稳定性
overlay2
aufs
btrfs
devicemapper

在生产环境中,overlay2通常是平衡性最好的选择。

← 返回列表