Docker安装详解--基于Ubuntu环境

目录

[1. Docker Server版本安装](#1. Docker Server版本安装)

[1.1 Ubuntu 安装(以华为云 Ubuntu 20.04 为例)](#1.1 Ubuntu 安装(以华为云 Ubuntu 20.04 为例))

[1.2 实战经验](#1.2 实战经验)

[1.2.1 Docker 镜像源修改](#1.2.1 Docker 镜像源修改)

[1.2.2 Docker 目录修改](#1.2.2 Docker 目录修改)


望读者阅读本文之后能够掌握如何安装 docker。(使用Xshell进行操作)

正文开始:

1. Docker Server版本安装

1.1 Ubuntu 安装(以华为云 Ubuntu 20.04 为例)

安装依赖:

  1. 操作系统版本
bash 复制代码
Ubuntu Kinetic 22.10
Ubuntu Jammy 22.04 (LTS)
Ubuntu Focal 20.04 (LTS)
Ubuntu Bionic 18.04 (LTS)
  1. CPU 支持
bash 复制代码
ARM 和 X86_64

安装Docker:

  1. 确定 CPU,可以看到我们的是 X86_64,是支持的,如果是 arm 一般会显示aarch64
bash 复制代码
 uname -a

Linux hcss-ecs-c91e 6.8.0-106-generic #106-Ubuntu SMP PREEMPT_DYNAMIC Fri Mar  6 07:58:08 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
  1. 确定操作系统版本,本次我们使用的是 Ubuntu 20.04
bash 复制代码
cat /etc/*release*

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=24.04
DISTRIB_CODENAME=noble
DISTRIB_DESCRIPTION="Ubuntu 24.04.4 LTS"
PRETTY_NAME="Ubuntu 24.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.4 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo
  1. 卸载旧版本,如果是新购买的云服务器是没有的,比如输入 docker 并没有这个命令,就不需要卸载
bash 复制代码
# 若是直接在root用户下操作,无需加 sudo
sudo apt-get remove docker docker-engine docker.io containerd runc

Reading package lists... Done
Building dependency tree 
Reading state information... Done
E: Unable to locate package docker-engine
  1. 卸载历史版本
bash 复制代码
#卸载软件
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras -y

#卸载软件操作之后,可能还是会没卸载干净,还存在一些数据,可查看docker的默认缓存路径
ll /var/lib/docker/
#所以还需要进行下列删除目录操作

#删除目录
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

#下列是修改后的目录
#若是存在修改过目录的情况,可根据实际情况进行删除操作,示例如下:
sudo rm -rf /data/var/lib/docker
sudo rm -rf /etc/docker/daemon.json

注意:事先可先去确认系统中是否安装过Docker,若没有安装过,即可不必去执行卸载操作如:

bash 复制代码
docker version

-bash: /usr/bin/docker: No such file or directory
  1. 配置 docker 下载源
bash 复制代码
#curl 命令安装  在root用户下操作可不加sudo
sudo apt install curl -y

#创建 gpg key 目录
sudo mkdir -m 0755 -p /etc/apt/keyrings

#下载 gpg key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg

#到此,gpg key 搞好了之后,就要开始配置docker源了,那配置在哪里呢?
#可先看看我们的系统源在哪
cat /etc/apt/sources.list

#docker源会配置在该目录下
ll /etc/apt/sources.list.d/

#开始配置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
  1. 安装
bash 复制代码
sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

但是,执行完 apt-get update 命令,刷新本地软件包索引后发现报错!如下:

报错分析:

报错的核心原因是网络连接问题,导致 apt 无法与 Docker 官方源服务器完成 TLS 握手。

具体表现为 Could not handshake: Error in the pull function. IP: 108.138.7.48 443。这通常意味着你的服务器在尝试连接 download.docker.com 的 443 端口时被阻断或超时,常见于国内网络环境访问 Docker 官方源不稳定的情况。

解决方案:换用国内镜像源:

最直接有效的办法是将 Docker 的 APT 源替换为国内镜像站(如阿里云)。你需要先清理掉之前配置的失效源,再按新方式配置。

  1. 移除旧的 Docker 源文件
bash 复制代码
sudo rm /etc/apt/sources.list.d/docker.list
  1. 使用阿里云镜像源重新配置(适配 Ubuntu 24.04 noble)

安装教程来源:Docker CE镜像-Docker CE镜像下载安装-开源镜像站-阿里云

bash 复制代码
# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

# step 2: 信任 Docker 的 GPG 公钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Step 3: 写入软件源信息
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
 
# Step 4: 安装Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
#   docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
#   docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]

查看安装结果:

  1. 自动启动配置
bash 复制代码
#配置加载
sudo systemctl daemon-reload
 
#启动服务
sudo systemctl start docker 

#开机自行启动命令
sudo systemctl enable docker

#查看服务状态,执行该命令后可按 q键退出
sudo systemctl status docker
  1. 检查安装结果查看版本
bash 复制代码
root@hcss-ecs-c91e:~# docker version
Client: Docker Engine - Community
 Version:           29.9.1
 API version:       1.56
 Go version:        go1.26.9
 Git commit:        dfc520d
 Built:             Wed Oct 14 18:32:55 2026
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          29.9.1
  API version:      1.56 (minimum version 1.40)
  Go version:       go1.26.9
  Git commit:       b26fb77
  Built:            Wed Oct 14 18:32:55 2026
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v2.4.2
  GitCommit:        b7a25261e029d68978bbf290df0a62fc819b3c51
 runc:
  Version:          1.5.2
  GitCommit:        v1.5.2-0-g29dd3dc2
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
  1. 更详细查看 docker 信息
bash 复制代码
docker info
  1. 执行 hello-world 可以看到 Hello from Docker,表明 docker 服务正常

观察到如下现象:

这个报错的原因很明确:你的服务器无法直接连接 Docker Hub 的官方镜像仓库。dial tcp ... i/o timeout 表示连接超时,这在国内网络环境下非常常见,因为 registry-1.docker.io 的服务器在海外,跨境访问不稳定。

既然我们之前已经成功把 APT 源换成了阿里云,说明系统基础网络是通的,只是访问 Docker Hub 这个特定地址被阻断了。

解决方法:配置国内镜像加速器:

你需要让 Docker 在拉取镜像时,改从国内的镜像站下载。最通用的做法是修改 Docker 的配置文件。

  1. 创建或修改配置文件
bash 复制代码
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.m.daocloud.net",
    "https://dockerproxy.net",
    "https://mirror.baidubce.com"
  ]
}
EOF

这里放入了几个目前可用的公共加速地址。如果你有阿里云账号,也可以登录阿里云容器镜像服务控制台获取专属加速地址(形如 https://xxxx.mirror.aliyuncs.com),替换进去效果会更稳定

  1. 重新加载配置并重启Docker
bash 复制代码
sudo systemctl daemon-reload
sudo systemctl restart docker
  1. 再次尝试拉取镜像
bash 复制代码
docker run hello-world

1.2 实战经验

1.2.1 Docker 镜像源修改

对于使用 systemd 的系统(Ubuntu 16.04+、Debian 8+、CentOS 7), 如果是腾讯云在配置文件 /etc/docker/daemon.json 中加入(即在/etc/docker/目录下,借助vim,将下列代码写入daemon.json文件中)。

复制代码
#json
{
 "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}

如果是阿里云,因为只对企业开放海外代理,只能找私人的一些开放的源,目前可以使用的源如下。

java 复制代码
{
 "registry-mirrors": [
         "https://docker.m.daocloud.io",
         "https://dockerhub.timeweb.cloud",
         "https://huecker.io"
 ]

重新启动 dockerd:

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl restart docker

1.2.2 Docker 目录修改

Docker 默认的安装目录为/var/lib/docker,这里面会存放很多很多镜像,所以我们在安装的时候需要考虑这个目录的空间,有三种解决方案。

  1. 将/var/lib/docker 挂载到一个大的磁盘,这种一般我们能控制挂载目录,像腾讯云这种云厂商在安装 K8s 的节点的时候提供了挂载选项,可以直接挂载这个目录过去

  2. 安装之前挂载一个大的磁盘,然后创建一个软链接到/var/lib/docker,这样就自动安装到我们空间比较大的磁盘了

  3. 安装了 docker,然后发现忘了配置这个目录,我们需要修改 docker 的配置文件

bash 复制代码
#假定我们磁盘的大的目录为 /data
mkdir -p /data/var/lib/docker 

# 编辑配置文件
vim /etc/docker/daemon.json

# 输入下面的 json
{
"data-root": "/data/var/lib/docker"
}

# 加载配置
sudo systemctl daemon-reload 

# 重启 docker
sudo systemctl restart docker 

#查看 docker 状态
sudo systemctl status docker

编辑配置文件信息:vim /etc/docker/daemon.json

查看Docker: docker info

修改前在/var/lib/docker 下

修改后在/data/var/lib/docker 下

相关推荐
柏慧通云报餐1 小时前
政企清廉食堂数字化建设方案:基于一体化报餐平台的全链路管控落地思路
大数据·运维·人工智能·物联网·sass
snpgroupcn1 小时前
SAP迁移工程下篇:模板复用、自动化执行与阶段内置校验的实现(下篇)
运维·自动化
Ya_Chuan_1 小时前
实验室防排烟系统与通风排风系统联动控制逻辑讲解
运维·数据中心·实验室·dcom·ibms 集成平台技术
EVEN-09131 小时前
Linux-进程(2)
linux·运维·服务器
u0109053591 小时前
(永久免费)树莓派 / 香橙派等开发板,安装神卓互联巴比达内网穿透安装教程(Linux ARM 版 V9.4.1)
linux·运维·arm开发
liuhaoodng6261 小时前
《网络IA项目:单臂路由(vlan间通讯)优化实战版》
运维·网络·网络协议
Linux_cy1 小时前
服务器管理方案选型:面板 / SSH 客户端 / 桌面型客户端怎么选
java·linux·运维·服务器·ssh·可视化·gmssh
幽默小吴2 小时前
docker篇(一)
docker
熊猫钓鱼>_>2 小时前
CMP for OpenHarmony 实战:Coil 图片加载库鸿蒙化使用心得
运维·服务器·开发语言·华为·ai编程·harmonyos·openharmony