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:// |
需要注册账号 |
| 网易 | `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/)
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。






