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

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

一、Docker简介

1.1 什么是Docker?

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

Docker的核心优势:

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

1.2 Docker架构


┌─────────────────────────────────────────────────┐
│                  Docker Host                      │
│  ┌─────────────────────────────────────────┐  │
│  │              Docker Daemon                 │  │
│  │  (dockerd - 负责管理镜像和容器)           │  │
│  └─────────────────────────────────────────┘  │
│                     │                           │
│  ┌─────────────────┼─────────────────┐         │
│  │                 │                 │         │
│  ▼                 ▼                 ▼         │
│ ┌─────────┐  ┌─────────┐  ┌─────────┐     │
│ │ Images  │  │Containers│  │ Networks│     │
│ │ (镜像)  │  │ (容器)   │  │ (网络)   │     │
│ └─────────┘  └─────────┘  └─────────┘     │
└─────────────────────────────────────────────────┘

二、安装前准备

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/)

发表回复

后才能评论