Ubuntu 22.04使用国内源安装Docker CE完整指南(含开源项目地址)

Ubuntu 22.04使用国内源安装Docker CE完整指南

项目介绍

Docker官方网站与开源地址

Docker 是一个开源的容器化平台,由Docker Inc.(前身为DotCloud)开发和维护。

  • 🌐 官方网站:https://www.docker.com/
  • 📖 官方文档:https://docs.docker.com/
  • 💻 GitHub仓库:https://github.com/docker
  • 📦 Docker Hub:https://hub.docker.com/
  • 💬 社区论坛:https://forums.docker.com/
  • 相关开源项目:

    项目 GitHub地址 说明
    Docker Engine https://github.com/moby/moby 容器引擎核心
    Docker Compose https://github.com/docker/compose 容器编排工具
    Docker Buildx https://github.com/docker/buildx 构建工具
    Containerd https://github.com/containerd/containerd 容器运行时
    RunC https://github.com/opencontainers/runc 容器运行时标准

Docker发展历程

年份 版本 重要里程碑
2013 0.1 首个版本发布,开源容器技术
2014 1.0 正式发布生产环境版本
2015 1.8 引入Docker Compose
2016 1.12 引入Docker Swarm Mode
2017 17.03 企业版Docker EE发布
2019 19.03 引入Docker BuildKit
2020 20.10 长期支持版本
2023 24.0 最新稳定版本

Docker核心概念

为什么使用Docker?

  • 🚀 快速部署:秒级启动容器,部署时间从几天缩短到几分钟
  • 📦 环境一致:开发、测试、生产环境完全一致,消除"在我机器上能运行"的问题
  • 🔒 隔离性:每个容器独立运行,应用程序之间相互隔离
  • 💰 成本节约:相比虚拟机,容器更轻量,资源利用率更高
  • 🌍 可移植性:一次构建,到处运行,支持Windows、Linux、macOS
  • 🔄 弹性扩展:快速扩容缩容,支持微服务架构
  • 🛡️ 安全性:提供多层安全机制,包括资源限制、命名空间隔离

容器vs虚拟机

特性 Docker容器 虚拟机
启动时间 秒级 分钟级
资源消耗 极低 较高
操作系统 共享内核 独立内核
隔离性 进程级 硬件级
大小 MB级 GB级
迁移方便性 非常简单 较复杂

一、Docker简介

1.1 什么是Docker?

Docker是一个开源的容器化平台,允许开发者将应用程序及其依赖打包到轻量级容器中,实现快速部署和一致性运行环境。

Docker的核心优势:

  • 轻量级:容器共享主机内核,比虚拟机更轻量
  • 快速启动:秒级启动,大大缩短部署时间
  • 一致性:开发、测试、生产环境保持一致
  • 隔离性:应用程序之间相互隔离
  • 可移植:一次构建,到处运行

1.2 Docker架构


+---------------------------------------------------------+
|                     Docker Host                            |
|  +-------------------------------------------------+  |
|  |              Docker Daemon                       |  |
|  |  (dockerd - 负责管理镜像和容器)                |  |
|  +-------------------------------------------------+  |
|  +----------------+ +----------------+ +------------+ |
|  v                v v                v v            v |
| +----------+  +-----------+  +-----------+           |
| | Images   |  | Containers|  | Networks |           |
| | (镜像)   |  | (容器)   |  | (网络)   |           |
| +----------+  +-----------+  +-----------+           |
+---------------------------------------------------------+

二、安装前准备

2.1 系统要求

2.1 系统要求

项目 要求
CPU 64位架构,支持虚拟化
内存 512MB(建议2GB以上)
磁盘 至少10GB可用空间(建议20GB以上)
系统 Ubuntu 22.04 LTS (Jammy Jellyfish)

检查系统版本:


# 查看系统版本
lsb_release -a

# 或查看/etc/os-release
cat /etc/os-release

# 查看内核版本
uname -r

# 检查CPU架构
uname -m

输出示例:


No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.3 LTS
Release:        22.04
Codename:       jammy

2.2 更新系统


# 更新软件包列表
sudo apt update

# 升级已安装的软件包
sudo apt upgrade -y

# 重启系统(如果内核更新)
sudo reboot

三、安装Docker CE

3.1 卸载旧版本

如果系统中已安装旧版本Docker,请先卸载:


# 卸载旧版本Docker
sudo apt remove docker docker-engine docker.io containerd runc

# 清理Docker相关数据
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

3.2 安装依赖包


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

3.3 添加Docker官方GPG密钥


# 创建密钥目录
sudo install -m 0755 -d /etc/apt/keyrings

# 下载Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 赋予权限
sudo chmod a+r /etc/apt/keyrings/docker.gpg

3.4 添加Docker软件仓库(使用阿里云镜像源)

方法一:使用阿里云镜像源(推荐,国内速度快)


# 添加阿里云Docker镜像仓库
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

方法二:使用官方源(如果阿里云不可用)


# 使用Docker官方源
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

方法三:使用清华源


# 使用清华Docker镜像源
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

3.5 安装Docker CE


# 更新软件包索引
sudo apt update

# 安装Docker CE
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 验证安装
docker --version
docker compose version

预期输出:


Docker version 24.0.7, build afdd53b
Docker Compose version v2.21.0

四、配置Docker

4.1 启动Docker服务


# 启动Docker服务
sudo systemctl start docker

# 设置开机自启动
sudo systemctl enable docker

# 查看服务状态
sudo systemctl status docker

4.2 配置Docker镜像加速

国内访问Docker Hub较慢,建议配置镜像加速器。

编辑Docker配置文件:


# 创建配置文件
sudo mkdir -p /etc/docker

# 创建daemon.json文件
sudo tee /etc/docker/daemon.json << 'EOF'
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com",
    "https://registry.docker-cn.com",
    "https://mirror.ccs.tencentyun.com"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  },
  "storage-driver": "overlay2",
  "experimental": true,
  "features": {
    "buildkit": true
  }
}
EOF

重启Docker服务:


# 重启Docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker

# 验证配置
docker info | grep -A 10 "Registry Mirrors"

常用国内镜像加速器:

加速器名称 地址 备注
阿里云 `https://.mirror.aliyuncs.com` 需要注册账号
网易 `https://docker.mirrors.ustc.edu.cn` 科大镜像
腾讯云 `https://mirror.ccs.tencentyun.com` 需配置域名
清华源 `https://registry.docker-cn.com` Docker官方合作

4.3 配置非root用户运行Docker

默认情况下,只有root用户可以运行Docker命令。


# 创建docker用户组(如果不存在)
sudo groupadd docker

# 将当前用户加入docker组
sudo usermod -aG docker $USER

# 重新登录或执行以下命令使组生效
newgrp docker

# 验证
docker run hello-world

4.4 配置Docker网络


# 查看当前网络配置
docker network ls

# 创建自定义网络
docker network create my-network

# 查看网络详情
docker network inspect my-network

五、Docker基本用法

5.1 镜像操作


# 查看本地镜像
docker images

# 搜索镜像(从Docker Hub)
docker search ubuntu

# 拉取镜像
docker pull ubuntu:22.04
docker pull nginx:latest
docker pull mysql:8.0

# 删除镜像
docker rmi ubuntu:22.04

# 构建镜像
docker build -t my-app:1.0 .

# 标记镜像
docker tag my-app:1.0 my-registry.com/my-app:1.0

# 推送镜像到仓库
docker push my-registry.com/my-app:1.0

5.2 容器操作


# 运行容器
docker run -d --name my-container nginx
docker run -it --name ubuntu-shell ubuntu:22.04 /bin/bash

# 查看运行中的容器
docker ps

# 查看所有容器(包括已停止)
docker ps -a

# 停止容器
docker stop my-container

# 启动容器
docker start my-container

# 重启容器
docker restart my-container

# 删除容器
docker rm my-container

# 查看容器日志
docker logs my-container

# 查看容器资源使用
docker stats my-container

# 进入容器
docker exec -it my-container /bin/bash

5.3 Docker Compose使用

创建 docker-compose.yml 文件:


version: '3.8'

services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    restart: always

  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root123
      MYSQL_DATABASE: myapp
    volumes:
      - mysql_data:/var/lib/mysql
    ports:
      - "3306:3306"
    restart: always

volumes:
  mysql_data:

启动服务:


# 启动服务
docker compose up -d

# 查看状态
docker compose ps

# 查看日志
docker compose logs -f

# 停止服务
docker compose down

# 停止并删除数据卷
docker compose down -v

六、常见问题解决

6.1 Docker服务无法启动

问题现象: sudo systemctl start docker 失败

解决方法:


# 查看错误日志
sudo journalctl -u docker -n 100

# 检查Docker配置
sudo dockerd --debug

# 常见原因:
# 1. 端口被占用
# 2. 配置文件语法错误
# 3. 磁盘空间不足

6.2 拉取镜像失败

问题现象: docker pull 超时或失败

解决方法:


# 1. 检查镜像加速器配置
cat /etc/docker/daemon.json

# 2. 测试镜像仓库连通性
curl -I https://docker.mirrors.ustc.edu.cn

# 3. 尝试其他镜像源
docker pull registry.docker-cn.com/library/nginx:latest

# 4. 检查网络
ping docker.io

6.3 权限问题

问题现象: Got permission denied while trying to connect...

解决方法:


# 方法1:使用sudo
sudo docker run hello-world

# 方法2:将用户加入docker组
sudo usermod -aG docker $USER
newgrp docker

# 方法3:检查socket权限
ls -l /var/run/docker.sock
sudo chmod 666 /var/run/docker.sock

6.4 磁盘空间不足

问题现象: No space left on device

解决方法:


# 查看Docker磁盘使用
docker system df

# 清理未使用的资源
docker system prune -a

# 清理具体资源
docker image prune -a
docker container prune
docker volume prune
docker network prune

# 删除所有未使用的数据
docker system prune -a --volumes

七、安全加固

7.1 配置TLS加密(生产环境)


# 创建CA证书
openssl genrsa -aes256 -out ca-key.pem 4096
openssl req -new -x509 -days 365 -key ca-key.pem -out ca.pem

# 创建服务器证书
openssl genrsa -out server-key.pem 4096
openssl req -new -key server-key.pem -out server.csr
openssl x509 -req -days 365 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem

# 配置Docker使用TLS
sudo tee /etc/docker/daemon.json << 'EOF'
{
  "tlsverify": true,
  "tlscacert": "/etc/docker/ca.pem",
  "tlscert": "/etc/docker/server-cert.pem",
  "tlskey": "/etc/docker/server-key.pem",
  "hosts": ["tcp://0.0.0.0:2376", "unix:///var/run/docker.sock"]
}
EOF

7.2 限制容器权限


# 在docker run时添加安全选项
docker run --security-opt=no-new-privileges my-container

# 使用只读文件系统
docker run --read-only my-container

# 限制容器能力
docker run --cap-drop ALL --cap-add NET_BIND_SERVICE my-container

八、性能优化

8.1 配置日志大小


{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}

8.2 配置存储驱动


{
  "storage-driver": "overlay2"
}

8.3 优化容器资源限制


# 限制CPU
docker run --cpus="1.5" my-container

# 限制内存
docker run -m="512m" --memory-swap="1g" my-container

# 设置CPU shares
docker run --cpu-shares=512 my-container

九、卸载Docker

如果需要完全卸载Docker:


# 停止Docker服务
sudo systemctl stop docker

# 卸载Docker软件包
sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 删除镜像、容器、数据卷
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

# 删除用户组
sudo groupdel docker

# 删除配置文件
sudo /etc/docker
sudo rm - rm -rfrf /etc/apt/sources.list.d/docker.list
sudo rm /etc/apt/keyrings/docker.gpg

十、总结

本文详细介绍了在Ubuntu 22.04上使用国内源安装Docker CE的完整流程,包括:

✅ 系统准备和依赖安装 ✅ Docker CE安装和配置 ✅ 国内镜像加速器配置 ✅ 非root用户权限配置 ✅ Docker基本操作和Docker Compose使用 ✅ 常见问题解决和安全加固 ✅ 性能优化和卸载步骤

关键要点回顾:

1. 使用阿里云等国内镜像源可以大幅提升安装速度 2. 配置镜像加速器能显著提高镜像拉取速度 3. 将用户加入docker组可以避免频繁使用sudo 4. 定期清理无用资源可以释放磁盘空间

下一步学习:

  • 学习Dockerfile编写
  • 掌握Docker Compose高级用法
  • 了解Docker Swarm或Kubernetes容器编排
  • 学习容器安全最佳实践
  • 相关资源:

  • Docker官方文档:https://docs.docker.com/
  • Docker Hub:https://hub.docker.com/
  • 阿里云Docker镜像:https://mirrors.aliyun.com/
  • 科大Docker镜像:https://docker.mirrors.ustc.edu.cn/

参考阅读:

  • [Ubuntu 22.04 LTS官方文档](https://ubuntu.com/server/docs)
  • [Docker官方安装指南](https://docs.docker.com/engine/install/ubuntu/)
  • [Docker Compose官方文档](https://docs.docker.com/compose/)

发表回复

后才能评论