保姆级教程:在Ubuntu 22.04 LTS上从零安装Docker Engine(避坑apt源更新)
Ubuntu 22.04 LTS 完整 Docker 环境部署指南:从系统配置到镜像加速
最近在帮团队部署新的开发环境时,发现即便是经验丰富的工程师,在全新系统上配置 Docker 仍然会遇到各种"坑"。特别是当系统刚安装完毕,直接运行 apt install docker.io 时,那个刺眼的 Unable to locate package 错误提示,让不少同事都挠头不已。本文将带你从零开始,在 Ubuntu 22.04 LTS 上完成 Docker 环境的完整部署,不仅解决常见报错,还会深入分析背后的原因,并提供国内开发者最需要的镜像加速方案。
1. 系统准备与环境检查
在开始安装 Docker 之前,我们需要确保系统处于最佳状态。很多安装问题其实源于基础环境配置不当。
首先确认你的 Ubuntu 版本是否为 22.04 LTS:
lsb_release -a
输出应该显示:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04 LTS
Release: 22.04
Codename: jammy
接下来,更新现有的软件包列表并升级已安装的软件:
sudo apt update && sudo apt upgrade -y
注意:这一步可能会花费较长时间,取决于你的网络速度和系统更新情况。建议在稳定的网络环境下执行。
检查系统架构(Docker 支持 x86_64/amd64、arm64、s390x 等架构):
uname -m
对于大多数现代电脑,应该显示 x86_64 或 amd64。
2. 软件源配置与优化
Unable to locate package 错误的根本原因是本地软件包索引没有正确更新或配置。我们需要确保软件源配置正确,特别是对于国内用户,使用国内镜像源可以大幅提升下载速度。
2.1 备份原有源列表
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
2.2 配置国内镜像源
对于 Ubuntu 22.04,推荐使用阿里云或清华大学的镜像源。以下是替换为阿里云镜像源的方法:
sudo sed -i 's|http://.*archive.ubuntu.com|https://mirrors.aliyun.com|g' /etc/apt/sources.list
sudo sed -i 's|http://.*security.ubuntu.com|https://mirrors.aliyun.com|g' /etc/apt/sources.list
或者使用清华源:
sudo sed -i 's|http://.*archive.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list
sudo sed -i 's|http://.*security.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list
2.3 更新软件包索引
这是解决 Unable to locate package 的关键步骤:
sudo apt update
这个命令会从配置的镜像源下载最新的软件包列表,通常需要几分钟时间。完成后,系统就能正确识别 docker.io 等软件包了。
3. Docker 安装方案选择与实施
Ubuntu 上有两种主要的 Docker 安装方式:Ubuntu 官方仓库的 docker.io 和 Docker 官方的 docker-ce。我们来分析两者的区别:
| 特性 | docker.io | docker-ce |
|---|---|---|
| 维护方 | Ubuntu 团队 | Docker 官方 |
| 更新频率 | 较低 | 较高 |
| 版本 | 较旧 | 最新 |
| 稳定性 | 高 | 较高 |
| 适合场景 | 生产环境 | 开发环境 |
3.1 安装 docker.io(Ubuntu 仓库版本)
这是最简单的安装方式,适合大多数不需要最新功能的用户:
sudo apt install docker.io -y
安装完成后,检查 Docker 版本:
docker --version
输出类似:
Docker version 20.10.12, build 20.10.12-0ubuntu2~22.04.1
3.2 安装 docker-ce(Docker 官方版本)
如果你需要最新功能,可以安装 Docker 官方版本。首先需要添加 Docker 的官方 GPG 密钥:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
然后添加 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
更新软件包索引并安装:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
验证安装:
docker --version
输出应该显示较新的版本号,如:
Docker version 24.0.2, build cb74dfc
4. 安装后配置与优化
安装完成后,还需要进行一些必要的配置才能获得最佳体验。
4.1 用户组配置
默认情况下,运行 Docker 命令需要 sudo 权限。为了避免每次都要输入密码,可以将当前用户加入 docker 组:
sudo usermod -aG docker $USER
newgrp docker
提示:执行
newgrp docker后可能需要重新登录才能使更改生效。
4.2 国内镜像加速
对于国内用户,从 Docker Hub 拉取镜像速度可能很慢。可以配置国内镜像加速器。
创建或修改 /etc/docker/daemon.json 文件:
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://mirror.baidubce.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
EOF
重启 Docker 服务使配置生效:
sudo systemctl restart docker
验证配置是否生效:
docker info | grep Mirrors -A 3
4.3 服务管理
Docker 安装后会自动启动并启用开机自启。你可以手动管理 Docker 服务状态:
# 查看状态
sudo systemctl status docker
# 启动服务
sudo systemctl start docker
# 停止服务
sudo systemctl stop docker
# 重启服务
sudo systemctl restart docker
# 设置开机自启
sudo systemctl enable docker
5. 验证与基本使用
现在,Docker 应该已经正确安装并配置好了。让我们运行一个测试容器来验证:
docker run hello-world
如果一切正常,你会看到类似下面的输出:
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
5.1 常用 Docker 命令速查
以下是一些最常用的 Docker 命令:
-
镜像相关:
# 搜索镜像 docker search ubuntu # 拉取镜像 docker pull ubuntu:22.04 # 列出本地镜像 docker images # 删除镜像 docker rmi <image_id> -
容器相关:
# 运行容器 docker run -it ubuntu:22.04 bash # 列出运行中的容器 docker ps # 列出所有容器(包括停止的) docker ps -a # 停止容器 docker stop <container_id> # 启动已停止的容器 docker start <container_id> # 删除容器 docker rm <container_id>
5.2 常见问题排查
如果在安装或使用过程中遇到问题,可以尝试以下排查步骤:
-
权限问题:
# 确保当前用户在 docker 组中 groups # 如果没有,添加并重新登录 sudo usermod -aG docker $USER -
服务未运行:
# 检查 Docker 服务状态 sudo systemctl status docker # 如果未运行,启动服务 sudo systemctl start docker -
网络问题:
# 测试是否能访问 Docker Hub curl -I https://hub.docker.com # 如果超时,可能需要配置代理或检查网络 -
存储空间不足:
# 检查 Docker 磁盘使用情况 docker system df # 清理未使用的资源 docker system prune
6. 进阶配置与优化建议
对于生产环境或需要高性能的场景,还需要考虑以下配置。
6.1 日志配置
默认情况下,Docker 容器的日志会无限增长。可以限制日志大小:
sudo tee -a /etc/docker/daemon.json <<-'EOF'
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
EOF
然后重启 Docker 服务:
sudo systemctl restart docker
6.2 存储驱动选择
Docker 支持多种存储驱动,对于 Ubuntu 22.04,推荐使用 overlay2:
docker info | grep Storage
如果显示不是 overlay2,可以修改 /etc/docker/daemon.json:
{
"storage-driver": "overlay2"
}
6.3 资源限制
为了防止单个容器占用过多资源,可以设置默认的资源限制:
sudo tee -a /etc/docker/daemon.json <<-'EOF'
{
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Hard": 65536,
"Soft": 65536
}
}
}
EOF
6.4 安全加固
生产环境中,应该考虑以下安全措施:
- 定期更新 Docker 和系统
- 使用非 root 用户运行容器
- 限制容器的能力(Capabilities)
- 启用内容信任(Content Trust)
- 扫描镜像中的漏洞
7. Docker 生态工具推荐
除了 Docker Engine 本身,还有一些周边工具可以提升开发效率:
- Docker Compose:用于定义和运行多容器应用
- Portainer:提供图形化管理界面
- Watchtower:自动更新运行中的容器
- Trivy:容器镜像漏洞扫描器
- LazyDocker:终端中的 Docker 管理工具
安装 Docker Compose(已包含在 docker-ce 安装中):
docker compose version
如果未安装,可以单独安装:
sudo apt install docker-compose-plugin -y
在团队协作中,我们通常会遇到各种环境配置问题。有一次新同事加入,花了两天时间都没能正确安装 Docker,最后发现是因为公司网络对某些域名做了限制。从那以后,我们就建立了内部的环境配置文档,并设置了本地镜像缓存。这种经验告诉我,看似简单的环境配置,实际上需要考虑很多细节
更多推荐
所有评论(0)