Ubuntu 安装 Docker 操作手册


官方操作手册

操作系统要求

要安装 Docker 引擎,您需要以下 Ubuntu 版本的 64 位版本之一:

  • Ubuntu Questing 25.10  Ubuntu 探索版 25.10
  • Ubuntu Plucky 25.04  Ubuntu 勇敢版 25.04
  • Ubuntu Noble 24.04 (LTS)  Ubuntu 贵族版 24.04 (LTS)
  • Ubuntu Jammy 22.04 (LTS)  Ubuntu 甜蜜版 22.04 (LTS)

Ubuntu 的 Docker Engine 与 x86_64(或 amd64)、armhf、arm64、s390x 和 ppc64le(ppc64el)架构兼容。

查看系统版本

sharkidon@ubuntu:~$ cat /etc/os-release
PRETTY_NAME="Ubuntu 25.10"
NAME="Ubuntu"
VERSION_ID="25.10"
VERSION="25.10 (Questing Quokka)"
VERSION_CODENAME=questing
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=questing
LOGO=ubuntu-logo

卸载旧版本

在安装 Docker Engine 之前,需要卸载任何冲突的软件包。
要卸载的非官方软件包有:

  • docker.io
  • docker-compose
  • docker-compose-v2
  • docker-doc
  • podman-docker

此外,Docker Engine 依赖于 containerd 和 runc 。Docker Engine 将这些依赖捆绑为一个包: containerd.io 。如果你之前安装了 containerd 或 runc ,卸载它们以避免与 Docker Engine 捆绑的版本冲突。

运行以下命令以卸载所有冲突的包:

sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1)

使用apt仓库安装

安装需要的工具

# 更新软件包索引
sudo apt update

# 安装需要的工具
sudo apt install ca-certificates curl

# 创建密钥环目录
sudo install -m 0755 -d /etc/apt/keyrings

设置apt仓库

设置官方仓库

# Add Docker's official GPG key:
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update

设置国内仓库

由于众所周知的原因,官方仓库的访问速度很感人,在没有进行科学上网的情况下,设置国内的仓库进行安装就很有必要

设置清华大学仓库

# 添加清华大学源的GPG密钥
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 设置稳定版仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update

设置阿里云仓库

# 添加阿里云官方GPG密钥
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
 
# 写入阿里云Docker仓库地址
sudo sh -c 'echo "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list'

sudo apt update

安装

最新版

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

指定版本

要安装特定版本的 Docker Engine,首先列出仓库中可用的版本:

apt list --all-versions docker-ce

docker-ce/noble 5:29.0.4-1~ubuntu.24.04~noble <arch>
docker-ce/noble 5:29.0.3-1~ubuntu.24.04~noble <arch>

选择所需版本并安装:

VERSION_STRING=5:29.0.4-1~ubuntu.24.04~noble

sudo apt install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin

启动服务

Docker 服务安装后自动启动。要验证 Docker 是否正在运行,请使用:

sudo systemctl status docker

一些系统可能已禁用此行为,需要手动启动:

sudo systemctl start docker

更改国内镜像

docker.io gcr.io 等国际镜像站访问受限,需要更改国内的镜像源,以加速镜像拉取。

可用镜像源列表(2025.2.6更新)

推荐组合使用 
docker.m.daocloud.io      # 国内老牌服务商 
docker.imgdb.de           # 德国镜像站(全球化同步)
docker-0.unsee.tech       # 亚洲节点加速站 
docker.hlmirror.com       # 国内高校镜像(理论场景专用)
docker.1ms.run            # 分钟级同步镜像站 
docker.xuanyuan.me        # 轩辕镜像

临时加速,单次有效

通用格式(镜像地址不加https://)
sudo docker pull [镜像源]/镜像名:版本号 
 
使用示例 
sudo docker pull docker.m.daocloud.io/hello-world:latest 

永久配置,推荐

创建配置文件目录(已存在可跳过)
sudo mkdir -p /etc/docker 
 
通过命令行生成配置(推荐新手)
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://docker.imgdb.de",
        "https://docker-0.unsee.tech",
        "https://docker.hlmirror.com"
    ]
}
EOF 


应用配置(必须执行)
sudo systemctl daemon-reload 
sudo systemctl restart docker 

🧪 验证配置

docker info 

验证

验证安装是否成功,通过运行 hello-world 镜像:

sudo docker run hello-world

此命令下载一个测试镜像并在容器中运行它。当容器运行时,它会打印一条确认消息然后退出。

安装后的操作

以非root用户管理Docker

Docker 守护进程绑定到 Unix 套接字,而不是 TCP 端口。默认情况下,是 root 用户拥有 Unix 套接字,其他用户只能使用 sudo 访问它。Docker 守护进程始终以 root 用户身份运行。

如果您不想在 docker 命令前加上 sudo ,请创建一个名为 docker 的 Unix 组,并将用户添加到该组中。当 Docker 守护进程启动时,它会创建一个 Unix 套接字,该套接字可供 docker 组成员访问。在某些 Linux 发行版中,当使用包管理器安装 Docker Engine 时,系统会自动创建此组。在这种情况下,您无需手动创建组。

# 查看所有群组
cat /etc/group
  1. 创建 docker 群组,若已存在可跳过。

    sudo groupadd docker
  2. 将用户添加到docker群组

    sudo usermod -aG docker $USER
  3. 注销并重新登录,以便重新评估您的组成员资格。
    如果在虚拟机中运行 Linux,可能需要重新启动虚拟机以使更改生效。

还可以运行以下命令以激活对组的更改:

newgrp docker
  1. 确认可以在不使用 sudo 的情况下运行 docker 命令。
    docker run hello-world

此命令会下载一个测试镜像并在容器中运行它。当容器运行时,它会打印一条消息然后退出。

如果最初在将用户添加到 docker 组之前使用 sudo 运行了 Docker CLI 命令,您可能会看到以下错误:

WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied

此错误表明由于之前使用了 sudo 命令, ~/.docker/ 目录的权限设置不正确。

要解决这个问题,可以删除 ~/.docker/ 目录(它会被自动重新创建,但任何自定义设置都会丢失),或者使用以下命令更改其所有权和权限:

sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "$HOME/.docker" -R

配置Docker在启动时使用systemd启动

许多现代 Linux 发行版使用 systemd 来管理系统启动时启动哪些服务。在 Debian 和 Ubuntu 上,Docker 服务默认在启动时启动。要使其他使用 systemd 的 Linux 发行版在启动时自动启动 Docker 和 containerd,请运行以下命令:

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

要停止这种行为,请使用 disable 。

sudo systemctl disable docker.service
sudo systemctl disable containerd.service

可以使用 systemd 单元文件来配置 Docker 服务在启动时的设置,例如添加 HTTP 代理、为 Docker 运行时文件设置不同的目录或分区,或进行其他自定义。

配置默认日志驱动程序

Docker 为收集和查看主机上所有容器运行的日志数据提供了日志驱动程序。默认的日志驱动程序 json-file 将日志数据写入主机文件系统中的 JSON 格式文件。随着时间的推移,这些日志文件会不断增大,可能导致磁盘资源耗尽。

为避免因过度使用磁盘存储日志数据而出现问题,请考虑以下选项之一:

  • 配置 json-file 日志驱动以开启日志轮转,JSON 文件日志驱动程序
  • 使用其他日志驱动程序,例如默认执行日志轮转的日志驱动程序,配置日志驱动程序
  • 使用将日志发送到远程日志聚合器的日志驱动程序。

文章作者: gloamfox
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 gloamfox !
 上一篇
知其然知其所以然:Boolean类型命名规范
本文深入探讨了Java中布尔类型属性命名的规范问题,分析了基本数据类型boolean和包装类型Boolean在不同开发工具和序列化框架下的行为差异。文章通过IDEA、Eclipse和Lombok的对比测试,展示了is开头的布尔属性在不同序列化工具(Jackson、Gson、FastJson)中可能导致的序列化和反序列化问题,解释了阿里巴巴开发手册中相关规约背后的原因。
2025-12-06
下一篇 
Ubuntu修改国内源解决下载问题
本文介绍了如何解决Ubuntu系统软件下载速度慢的问题,通过更换国内镜像源(如163源、阿里源、清华源、中科大源)来提高下载速度。文章详细说明了备份官方源、下载第三方源文件以及更新资源的具体操作步骤,所有操作都需要在管理员模式下进行。
2025-11-27
  目录