怎么用脚本一键在Ubuntu上安装Docker

Dylan
Dylan
发布时间:2026-10-22| 5人浏览过
原创

在Ubuntu上部署Docker最快捷的方法是使用Docker官方提供的便捷安装脚本(get-docker.sh)。只需一条命令下载并执行该脚本,系统就会自动完成检测操作系统发行版、添加官方GPG密钥、配置APT软件源以及安装最新版Docker Engine与关联插件的全部工作。本文将拆解这套一键安装脚本的完整流程、前置检查、非root权限配置以及安装后的验证方法。

一、准备工作与前提条件

虽然便捷脚本具备高度的自动化处理能力,但为了确保安装过程顺畅无阻,执行前需要在Ubuntu宿主机上核实以下基础运行环境:

  • 系统版本:推荐Ubuntu 20.04 LTS (Focal)、22.04 LTS (Jammy) 或 24.04 LTS (Noble)。脚本支持x86_64 (amd64)、arm64以及armhf硬件架构。
  • 网络与下载工具:系统中需具备curl命令。若尚未安装,需先通过系统包管理器安装。
  • 用户权限:当前执行用户需具备sudo管理员权限,用于写入系统密钥和安装系统级系统守护进程。

在终端中执行以下命令,更新本地软件包索引并安装curl工具:

sudo apt-get update && sudo apt-get install -y curl
怎么用脚本一键在Ubuntu上安装Docker
图 1:使用一键安装脚本部署 Docker 的标准步骤流转

二、下载并执行一键安装脚本

Docker 官方维护着一份用于快速安装的 Shell 脚本,托管在 https://get.docker.com。为了安全起见,推荐将脚本保存到本地后再以管理员权限运行,而不是直接将网络流通过管道输送给解释器。

1. 下载脚本文件

在当前目录下运行以下命令,将远程脚本另存为 get-docker.sh:

curl -fsSL https://get.docker.com -o get-docker.sh

参数解释:-f 表示 HTTP 错误时不输出 HTML 错误页面;-s 为静音模式;-S 在发生错误时显示提示;-L 遇到重定向时自动跟随。

2. 安全审查(可选但推荐)

在执行任何来自公网的提权安装脚本前,可以使用 --dry-run 参数检查脚本将在当前系统上执行哪些指令,而不会产生实质修改:

sh get-docker.sh --dry-run

3. 执行一键安装

审查无误后,使用 sudo 权限调用 sh 执行安装:

sudo sh get-docker.sh
国内服务器网络镜像备选项
如果服务器位于中国大陆境内,直连官方软件源可能会遇到下载超时或速率较低的问题。此时可以在脚本执行时指定软件源镜像地址(如阿里云镜像源):
sudo sh get-docker.sh --mirror Aliyun

脚本启动后会自动输出安装进度。示例输出如下所示:

# Executing docker install script, commit: e5543d473431b782227f8908005543b4b2b2b119
+ sh -c 'apt-get update -qq >/dev/null'
+ sh -c 'DEBIAN_FRONTEND=noninteractive apt-get install -y -qq apt-transport-https ca-certificates curl gnupg >/dev/null'
+ sh -c 'install -m 0755 -d /etc/apt/keyrings'
+ sh -c 'curl -fsSL "https://download.docker.com/linux/ubuntu/gpg" | gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg'
+ sh -c 'echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu noble stable" > /etc/apt/sources.list.d/docker.list'
+ sh -c 'apt-get update -qq >/dev/null'
+ sh -c 'DEBIAN_FRONTEND=noninteractive apt-get install -y -qq docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras docker-buildx-plugin >/dev/null'

三、一键脚本的底层运作机制

许多初学者认为一键脚本等同于一个黑盒安装包,但它本质上是一套严格遵守 Debian/Ubuntu 软件源规范的自动化 Shell 程序。理解它在系统中做了什么,有助于在日后维护或卸载时心中有数。

怎么用脚本一键在Ubuntu上安装Docker
图 2:便捷脚本自动执行的底层配置与组件安装全貌

四、一键脚本安装与手动配置仓库的选型对比

Docker 官方文档明确指出:便捷脚本主要针对开发测试环境、原型验证或单机边缘节点设计;而在大型企业级或严苛的生产环境中,通常推荐采用手动添加仓库或配置自动化运维工具(如 Ansible、Terraform)的方式进行精细化管理。

怎么用脚本一键在Ubuntu上安装Docker
图 3:一键脚本与手动配置仓库的特性与适用边界对比

五、配置非 root 用户使用权限

Docker 守护进程(dockerd)默认绑定在 Unix Socket 文件 /var/run/docker.sock 上,该文件默认属主为 root,属组为 docker。新装好的系统中,普通用户直接执行 docker ps 会遇到 permission denied 拒绝访问错误。

为了日常开发安全,避免每次都输入 sudo,需要将当前非 root 用户加入到 docker 用户组中:

1. 将当前用户添加至 docker 组

sudo usermod -aG docker $USER

参数解释:-a 表示追加(append),-G 指定附加组名,$USER 环境变量指向当前登录的用户名。

2. 刷新组身份生效

用户组信息的更改在新的登录会话中才会完全生效。可以通过重新登录终端,或者使用 newgrp 命令立即刷新当前 Shell 进程的组凭据:

newgrp docker

六、安装结果验证与健康检查

在脚本执行及权限配置完毕后,需要按顺序完成服务状态确认、版本检查以及运行测试容器三项验证。

1. 确认守护进程状态

使用 systemctl 查看 Docker 服务是否已正常处于运行状态,并设置为开机自启:

sudo systemctl status docker

如果输出中包含 Active: active (running) 且 Loaded: ... enabled,说明服务启动正常。

2. 运行验证容器

执行官方标准的 hello-world 镜像,该命令会尝试拉取镜像并在容器内打印问候信息后退出:

docker run hello-world

若终端中输出了以下说明段落,即表明从客户端与守护进程通信、镜像仓库拉取、容器创建到进程退出的整条链路均工作正常:

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker daemon created a new container from that image...
4. The Docker daemon streamed that output to the Docker client...
怎么用脚本一键在Ubuntu上安装Docker
图 4:Docker 安装成果的四个关键维度验收项

七、常见问题排查与解决办法

1. 下载脚本或镜像时网络连接超时

现象:执行 curl -fsSL https://get.docker.com 长期卡顿或报错 Failed to connect to get.docker.com port 443: Connection timed out。

排查与修复:这是由于宿主机到海外 CDN 节点的连通性受限所致。可以尝试更换为国内公开镜像源,或在具备代理的环境中配置环境变量后再行拉取:

# 临时挂载 HTTP 代理(若具备代理网关)
export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"

# 或直接使用镜像参数执行
sudo sh get-docker.sh --mirror Aliyun

2. 提示 Got permission denied while trying to connect to the Docker daemon socket

现象:未加 sudo 运行 docker images 时报错:permission denied while trying to connect to the Docker daemon socket。

排查与修复:当前登录账号尚未在当前终端会话中加载 docker 用户组凭据。先核实账号是否已加入组:

groups $USER

若输出包含 docker,直接运行 newgrp docker 激活新组;若不包含,请重新执行 sudo usermod -aG docker $USER 后注销并重新登录系统。

3. 与系统旧版本 docker.io 产生包冲突

现象:脚本在执行 apt-get install 时提示与已有软件包存在依赖冲突(如 docker.io 或旧版 containerd)。

排查与修复:Ubuntu 官方源自带的 docker.io 是社区旧包,与 Docker 官方维护的 docker-ce 存在文件命名冲突。在运行脚本前需彻底移除旧包:

sudo apt-get remove -y docker docker-engine docker.io containerd runc
sudo sh get-docker.sh

该清理操作不会删除 /var/lib/docker/ 下已有的历史镜像和容器数据,清理完毕后重新调用脚本即可平滑升级至官方最新版本。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。