Ubuntu系统下Docker容器环境部署全攻略

一、系统环境准备与依赖安装

在Ubuntu系统上部署Docker容器环境前,需完成基础依赖的安装配置。推荐使用较新版本的Ubuntu LTS(如22.04或24.04),这些版本对容器技术的支持更完善。

1.1 基础依赖安装

通过apt包管理器安装Docker运行所需的基础组件:

  1. sudo apt update
  2. sudo apt install -y \
  3. apt-transport-https \
  4. ca-certificates \
  5. curl \
  6. software-properties-common \
  7. gnupg

这些组件分别承担以下功能:

  • apt-transport-https:支持通过HTTPS协议访问软件源
  • ca-certificates:提供SSL证书验证能力
  • curl:网络请求工具
  • software-properties-common:管理软件源配置
  • gnupg:GPG密钥管理工具

1.2 网络协议优化

针对部分网络环境中IPv6连接不稳定的问题,可通过修改系统配置强制使用IPv4协议:

  1. sudo sh -c 'echo "precedence ::ffff:0:0/96 100" >> /etc/gai.conf'

该配置将IPv4地址的优先级设置为高于IPv6,确保网络请求优先通过IPv4协议传输。修改后需重启网络服务或重新登录终端使配置生效。

二、软件源配置与密钥管理

2.1 添加官方GPG密钥

为确保软件包来源可信,需导入Docker官方签名密钥:

  1. curl -4fsSL https://download.docker.com/linux/ubuntu/gpg | \
  2. sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

验证密钥有效性:

  1. gpg --show-keys /usr/share/keyrings/docker-archive-keyring.gpg

正确输出应包含Docker Release (CE deb)字样,表明密钥已正确安装。

2.2 创建软件源配置

根据系统架构和发行版代号创建专属软件源:

  1. echo "deb [arch=$(dpkg --print-architecture) \
  2. signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
  3. https://download.docker.com/linux/ubuntu \
  4. $(lsb_release -cs) stable" | \
  5. sudo tee /etc/apt/sources.list.d/docker.list

该配置文件包含三个关键参数:

  • arch:自动检测系统架构(amd64/arm64等)
  • signed-by:指定用于验证软件包签名的密钥路径
  • $(lsb_release -cs):动态获取当前系统的发行版代号

三、Docker引擎安装与验证

3.1 安装Docker CE版本

更新软件包索引后安装Docker社区版:

  1. sudo apt update
  2. sudo apt install -y docker-ce docker-ce-cli containerd.io

对于旧版Ubuntu系统,若官方源无可用版本,可尝试安装Ubuntu维护的稳定版:

  1. sudo apt install -y docker.io

3.2 服务状态验证

启动Docker服务并检查运行状态:

  1. sudo systemctl start docker
  2. sudo systemctl status docker

正常状态下应显示active (running),且无错误日志输出。

3.3 基础功能测试

运行官方测试镜像验证环境:

  1. sudo docker run --rm hello-world

成功输出Hello from Docker!表明安装配置正确。该命令会自动下载测试镜像,运行后自动删除容器实例。

四、用户权限与安全配置

4.1 用户组管理

将当前用户加入docker组以避免每次操作需sudo授权:

  1. sudo usermod -aG docker $USER

-aG参数确保在保留原有用户组的基础上追加docker组权限。修改后需重新登录终端或执行:

  1. newgrp docker

使组权限变更立即生效。

4.2 套接字权限检查

验证Docker守护进程套接字权限:

  1. ls -l /var/run/docker.sock

正确权限应显示为:

  1. srw-rw---- 1 root docker 0 Aug 10 10:00 /var/run/docker.sock

该配置允许docker组用户通过Unix套接字与守护进程通信。

五、镜像加速配置优化

5.1 配置镜像加速器

创建或修改守护进程配置文件:

  1. sudo tee /etc/docker/daemon.json <<-'EOF'
  2. {
  3. "registry-mirrors": [
  4. "https://<镜像加速器地址1>",
  5. "https://<镜像加速器地址2>"
  6. ]
  7. }
  8. EOF

国内开发者可使用行业常见的镜像加速服务,建议配置2-3个备用源以提高可靠性。

5.2 应用配置变更

重启Docker服务使配置生效:

  1. sudo systemctl daemon-reload
  2. sudo systemctl restart docker

验证配置是否加载成功:

  1. cat /etc/docker/daemon.json

输出应与配置文件内容一致。

六、常见问题解决方案

6.1 IPv6相关问题

若持续遇到IPv6连接问题,可在守护进程配置中显式禁用IPv6:

  1. {
  2. "ipv6": false,
  3. "fixed-cidr-v6": "2001:db8:1::/64"
  4. }

修改后需重启服务并检查网络连通性。

6.2 镜像拉取超时

遇到镜像拉取超时问题时,可尝试:

  1. 检查网络代理设置
  2. 更换镜像加速器地址
  3. 增加守护进程超时设置:
    1. {
    2. "max-download-attempts": 10,
    3. "max-concurrent-uploads": 5
    4. }

6.3 存储驱动配置

对于生产环境,建议配置overlay2存储驱动:

  1. {
  2. "storage-driver": "overlay2",
  3. "storage-opts": [
  4. "overlay2.override_kernel_check=true"
  5. ]
  6. }

该配置可提升文件系统性能并减少磁盘空间占用。

七、进阶配置建议

7.1 日志管理

配置日志轮转策略避免磁盘空间耗尽:

  1. {
  2. "log-driver": "json-file",
  3. "log-opts": {
  4. "max-size": "10m",
  5. "max-file": "3"
  6. }
  7. }

7.2 资源限制

为容器设置默认资源限制:

  1. {
  2. "default-ulimits": {
  3. "nofile": {
  4. "Name": "nofile",
  5. "Hard": 65535,
  6. "Soft": 65535
  7. }
  8. }
  9. }

7.3 安全加固

启用用户命名空间隔离增强安全性:

  1. {
  2. "userns-remap": "default"
  3. }

该配置会为每个容器创建独立的用户命名空间,防止容器内进程获取宿主机的root权限。

通过完成上述配置,开发者可在Ubuntu系统上获得稳定、高效且安全的Docker容器运行环境。建议定期检查官方文档获取最新版本信息和安全更新,保持系统与容器环境的持续优化。