在腾讯云 Ubuntu 系统上安装 Docker,最稳妥且符合官方规范的做法是使用 Docker 官方提供的 APT 仓库进行安装。这能确保你获取到最新稳定版,并方便后续通过 apt 命令进行升级和维护。
以下是基于 Ubuntu 20.04/22.04 LTS 版本的标准化操作流程。如果你使用的是较旧的版本(如 18.04),步骤类似,但需注意内核模块可能需手动加载。
前置准备:清理冲突环境
如果你的系统中曾经通过非官方方式(如直接下载 .deb 包)安装过 Docker,或者安装了旧版的 docker.io、docker-engine 等,建议先卸载以避免依赖冲突。
sudo apt-get remove docker docker-engine docker.io containerd runc
注意:此操作不会删除镜像、容器、卷或用户创建的配置文件,数据是安全的。
第一步:更新包索引并安装依赖
Docker 的 APT 仓库需要使用 HTTPS 协议访问,因此需要安装 ca-certificates、curl 和 gnupg 等信任工具。
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
第二步:添加 Docker 官方 GPG 密钥
为了验证软件包的真实性,我们需要导入 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
sudo chmod a+r /etc/apt/keyrings/docker.gpg
第三步:设置 Docker APT 仓库
根据 Ubuntu 的版本代号,添加对应的仓库源。以下命令会自动检测当前系统架构(amd64/arm64 等)并配置正确的源。
echo
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" |
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
注:VERSION_CODENAME 对于 Ubuntu 20.04 是 focal,对于 22.04 是 jammy。上述命令已自动处理。
第四步:安装 Docker Engine
再次更新包索引,然后安装最新的 Docker 组件。
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
这里安装的四个核心组件:
docker-ce: Docker 社区版引擎。docker-ce-cli: 命令行客户端。containerd.io: 容器运行时标准实现。docker-compose-plugin: 支持docker compose命令(原 v2 版本)。
第五步:验证安装
安装完成后,Docker 服务通常会自动启动。运行以下命令检查版本和服务状态:
# 检查 Docker 版本
docker --version
# 检查 Docker 服务状态
sudo systemctl status docker
# 运行测试容器(Hello World)
sudo docker run hello-world
如果看到 "Hello from Docker!" 的输出,说明安装成功。
关键配置:允许非 root 用户使用 Docker
默认情况下,Docker 守护进程绑定 Unix socket,只有 root 用户或具有 docker 组权限的用户才能执行 Docker 命令。为了避免每次都要加 sudo,可以创建一个名为 docker 的用户组,并将你的当前用户加入该组。
# 创建 docker 组(如果不存在)
sudo groupadd docker
# 将当前用户添加到 docker 组
sudo usermod -aG docker $USER
# 重新登录以使组更改生效
# 你可以注销后重新 SSH 连接,或者执行以下命令激活当前会话
newgrp docker
验证是否生效:
docker ps
如果不报错且列出容器列表(即使为空),则配置成功。
腾讯云特有优化建议
由于你在腾讯云环境中使用,还需注意以下几点以提升稳定性和安全性:
1. 安全组规则配置
Docker 默认不对外暴露端口,除非你在容器中映射了端口(如 -p 80:80)。请确保在腾讯云控制台的安全组中,放行了你需要访问的容器端口。例如,如果运行 Nginx 并映射了 80 端口,需在安全组入方向放行 TCP 80 端口。
2. 网络与 DNS 问题
在部分云环境中,默认的 DNS 解析可能较慢或不稳定。可以在 /etc/docker/daemon.json 中指定公共 DNS:
{
"dns": ["8.8.8.8", "114.114.114.114"]
}
保存后重启 Docker 服务:
sudo systemctl restart docker
3. 存储驱动选择
Ubuntu 默认使用 overlay2 存储驱动,这是推荐且高效的。无需额外配置。但如果你的云盘类型特殊(如某些高性能 SSD),可考虑启用 fuse-overlayfs 以提高小文件性能(适用于 rootless 模式或非特权容器场景)。
4. 日志轮转配置
Docker 容器日志默认无限制增长,可能导致磁盘占满。建议在 /etc/docker/daemon.json 中配置日志大小限制:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
修改后重启 Docker:
sudo systemctl restart docker
常见问题排查
Q: 安装后提示 "Cannot connect to the Docker daemon"
A: 检查 Docker 服务是否正在运行:sudo systemctl status docker。如果未启动,执行 sudo systemctl start docker 并设置为开机自启:sudo systemctl enable docker。
Q: 使用 sudo docker run 成功,但不用 sudo 报错 "permission denied"
A: 确认你是否已将当前用户加入 docker 组,并重新登录以刷新组权限。也可临时使用 newgrp docker 切换。
Q: 如何卸载 Docker?
A: 如果你想彻底清除,包括所有镜像、容器和数据卷:
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
以上流程覆盖了从清理、安装、配置到优化的完整路径,适用于绝大多数腾讯云 Ubuntu 实例场景。
CLOUD云枢