news 2026/10/28 10:09:39

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker安装详解--基于Ubuntu环境

目录

1. Docker Server版本安装

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

1.2 实战经验

1.2.1 Docker 镜像源修改

1.2.2 Docker 目录修改


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

正文开始:

1. Docker Server版本安装

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

安装依赖:

1.操作系统版本

Ubuntu Kinetic 22.10 Ubuntu Jammy 22.04 (LTS) Ubuntu Focal 20.04 (LTS) Ubuntu Bionic 18.04 (LTS)

2.CPU支持

ARM 和 X86_64

安装Docker:

1.确定CPU,可以看到我们的是X86_64,是支持的,如果是arm 一般会显示aarch64

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

2.确定操作系统版本,本次我们使用的是Ubuntu 20.04

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

3.卸载旧版本,如果是新购买的云服务器是没有的,比如输入docker 并没有这个命令,就不需要卸载

# 若是直接在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

4.卸载历史版本

#卸载软件 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,若没有安装过,即可不必去执行卸载操作如:

docker version -bash: /usr/bin/docker: No such file or directory

5.配置docker下载源

#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

6.安装

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 源文件

sudo rm /etc/apt/sources.list.d/docker.list

2.使用阿里云镜像源重新配置(适配 Ubuntu 24.04 noble)

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

# 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]

查看安装结果:

7.自动启动配置

#配置加载 sudo systemctl daemon-reload #启动服务 sudo systemctl start docker #开机自行启动命令 sudo systemctl enable docker #查看服务状态,执行该命令后可按 q键退出 sudo systemctl status docker

8.检查安装结果查看版本

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

9.更详细查看docker信息

docker info

10.执行hello-world可以看到Hello from Docker,表明docker服务正常

观察到如下现象:

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

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

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

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

1. 创建或修改配置文件

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),替换进去效果会更稳定

2. 重新加载配置并重启Docker

sudo systemctl daemon-reload sudo systemctl restart docker

3. 再次尝试拉取镜像

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"] }

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

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

重新启动dockerd:

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的配置文件

#假定我们磁盘的大的目录为 /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下

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/28 10:09:00

电商用户画像构建方案:多源数据融合与DeepSeek偏好预测实战

简介&#xff1a;这份213页的PDF方案面向电商数据从业者、算法工程师与推荐系统学习者&#xff0c;围绕多源数据融合下的用户画像构建展开&#xff0c;系统解决消费者行为分析与偏好预测中的工程落地问题。内容从行业痛点与DeepSeek方案定位切入&#xff0c;依次覆盖多源数据采…

作者头像 李华
网站建设 2026/10/28 10:08:08

从算力竞赛到系统效率:AI芯片的真实生产力

1. 这场竞赛的“分水岭”&#xff1a;算力不再是唯一答案1.1 算力竞赛到底在比什么过去十年&#xff0c;AI芯片行业的竞争逻辑其实非常单调&#xff1a;比谁的“峰值算力”数字更吓人。GPU厂商发布产品时&#xff0c;必给一张表格&#xff0c;里面列满FP16、BF16、INT8、稀疏算…

作者头像 李华
网站建设 2026/10/28 10:07:41

context-mode设计解析:从硬编码到动态上下文模式切换

1. 从“context-mode”这个命名说起&#xff1a;它到底指什么第一次看到“context-mode”这个词&#xff0c;很多人会下意识地把它当成某个具体框架的配置项&#xff0c;或者某个库里的枚举值。但如果你在工程一线待过几年&#xff0c;就会发现这个词其实是一个跨领域的设计概念…

作者头像 李华
网站建设 2026/10/28 10:07:20

网盘直链下载油猴脚本完整指南:LinkSwift 九大网盘直链解析

网盘直链下载油猴脚本完整指南&#xff1a;LinkSwift 九大网盘直链解析 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 /…

作者头像 李华
网站建设 2026/10/28 10:05:38

Agent可视化生成:用IR、DSL与SDK三层架构替代硬写代码

1. 从"让模型硬写代码"到"让模型生成中间表示"的思维转变过去一年我接触过不少 Agent 项目&#xff0c;从最简单的"帮我写个爬虫"到复杂的多步骤任务编排&#xff0c;一个反复出现的痛点特别扎眼&#xff1a;只要让大模型直接输出最终产物——不…

作者头像 李华