Ubuntu20.04安装Docker简单教程
概述
本文将引导您在 Ubuntu 20.04 (Focal Fossa) 上从零开始安装 Docker 引擎,包括卸载旧版本、安装必要依赖、配置官方仓库、安装 Docker Engine、验证安装以及可选的后续配置步骤,确保您能够安全、稳定地使用 Docker 容器化技术。
1. 卸载旧版本
在安装官方 Docker 之前,需先移除系统中可能存在的冲突包,这些包包括 docker.io、docker-doc、docker-compose、docker-compose-v2、podman-docker 以及旧版的 containerd 和 runc。
sudo apt-get remove -y docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc
此步骤确保旧版本不会干扰官方安装。
2. 安装依赖并配置官方仓库
2.1 更新 apt 源并安装基础依赖
首先更新本地软件包列表,并安装 HTTPS 传输及证书相关依赖:
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
这些工具用于安全地从 Docker 官方仓库拉取软件包。
2.2 添加 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 官方签名密钥下载并保存到安全目录,以便后续验证软件包完整性。
2.3 添加 Docker APT 仓库
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 的稳定版仓库添加到系统源列表中,以便通过 apt 安装和升级 Docker Engine。
3. 安装 Docker Engine
更新源列表后,即可安装最新的 Docker Engine 及其组件:
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
docker-ce:Docker 社区版引擎docker-ce-cli:命令行客户端containerd.io:容器运行时docker-buildx-plugin:高级构建插件docker-compose-plugin:Compose 插件。
4. 验证安装
执行以下命令,下载并运行 hello-world 测试镜像,确认 Docker 能正常工作:
sudo docker run hello-world
若输出 “Hello from Docker!” 等信息,则表明安装成功。
5. 可选的后续配置
5.1 免 sudo 运行 Docker
若希望当前用户无需 sudo 即可运行 Docker 命令,可将用户加入 docker 组:
sudo usermod -aG docker $USER
newgrp docker
完成后,退出终端重新登录,即可直接运行 docker ps 等命令。
5.2 开机自启
Docker 服务默认安装后会自动启动,如需确保在每次系统启动时都自动运行,可执行:
sudo systemctl enable docker
此命令会将 Docker 设置为开机自启动服务。
6. 错误示例
6.1错误
$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
6.2解决方法
sudo mkdir -p /etc/docker
vim /etc/docker/daemon.json
加入以下内容
{
"registry-mirrors" : ["https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://dockerproxy.com",
"https://mirror.aliyuncs.com",
"https://docker.rainbond.cc",
"https://mirror.baidubce.com",
"https://mirror.iscas.ac.cn",
"http://mirrors.ustc.edu.cn/",
"https://mirrors.tuna.tsinghua.edu.cn/",
"http://mirrors.sohu.com/",
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://dockerproxy.com",
"https://gst6rzl9.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
],
"insecure-registries" : [
"registry.docker-cn.com",
"docker.mirrors.ustc.edu.cn"
],
"debug": true,
"experimental": false
}
重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker

浙公网安备 33010602011771号