Ubuntu20.04安装Docker简单教程

概述

本文将引导您在 Ubuntu 20.04 (Focal Fossa) 上从零开始安装 Docker 引擎,包括卸载旧版本、安装必要依赖、配置官方仓库、安装 Docker Engine、验证安装以及可选的后续配置步骤,确保您能够安全、稳定地使用 Docker 容器化技术。

1. 卸载旧版本

在安装官方 Docker 之前,需先移除系统中可能存在的冲突包,这些包包括 docker.iodocker-docdocker-composedocker-compose-v2podman-docker 以及旧版的 containerdrunc

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
posted @ 2025-04-22 16:12  ZHZCE  阅读(374)  评论(0)    收藏  举报