Docker是一个开源的容器化平台,它允许开发者将应用程序及其依赖打包到一个可移植的容器中,从而实现一致的运行环境。安装过程涉及: 卸载旧版本、配置APT仓库、安装软件包、验证以及后置配置。
文章目录
- [1. 先决条件检查](#1. 先决条件检查)
- [2. 卸载旧版本的Docker](#2. 卸载旧版本的Docker)
- [3. 设置Docker的APT仓库](#3. 设置Docker的APT仓库)
-
- [3.1 更新软件包索引并安装依赖:](#3.1 更新软件包索引并安装依赖:)
- [3.2 下载并添加Docker官方GPG密钥:](#3.2 下载并添加Docker官方GPG密钥:)
- [3.3 添加Docker仓库源:](#3.3 添加Docker仓库源:)
- [4. 安装Docker Engine/Docker Compose](#4. 安装Docker Engine/Docker Compose)
-
- [4.1 安装最新版Docker包:](#4.1 安装最新版Docker包:)
- [4.2 验证Docker服务状态:](#4.2 验证Docker服务状态:)
- [5. 验证安装成功](#5. 验证安装成功)
-
- [5.1 运行hello-world容器:](#5.1 运行hello-world容器:)
- [5.2 查看Docker版本:](#5.2 查看Docker版本:)
- [6. 后置配置:允许非root用户运行Docker(推荐)](#6. 后置配置:允许非root用户运行Docker(推荐))
-
- [6.1 创建docker组(如果不存在)并添加当前用户:](#6.1 创建docker组(如果不存在)并添加当前用户:)
- [6.2 验证:](#6.2 验证:)
- 附加提示
注意 :这里假设你使用的是64位Ubuntu系统(如Ubuntu 25.10、25.04、24.04 LTS或22.04 LTS),并以root权限或sudo执行命令。安装前,确保系统已连接互联网,并检查防火墙兼容性(Docker可能绕过ufw或firewalld规则)。支持的架构包括x86_64 (amd64)、armhf、arm64、s390x和ppc64le。
1. 先决条件检查
在开始安装前,验证系统兼容性和潜在问题。
- 防火墙兼容性:Docker暴露容器端口时会绕过ufw或firewalld规则。确保使用iptables-nft或iptables-legacy(nft规则不受支持)。如果使用nftables,需调整规则到DOCKER-USER链中。
- 操作系统要求 :确认Ubuntu版本为25.10 (Questing)、25.04 (Plucky)、24.04 LTS (Noble) 或22.04 LTS (Jammy)。使用
lsb_release -a检查。
这些检查确保安装过程顺利,避免兼容性问题导致的失败。Docker依赖特定内核和架构来运行容器。
2. 卸载旧版本的Docker
Ubuntu的默认仓库可能包含旧版或冲突包(如docker.io),这些可能与官方Docker Engine不兼容,导致版本冲突或功能缺失。因此,第一步是彻底卸载任何现有的相关包。
执行以下命令卸载旧版本:
bash
sudo apt-get update
sudo apt-get remove docker docker-engine docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc
- 如果系统报告某些包未安装,此命令会无害地继续。
- 原理说明 :
apt-get remove移除指定的软件包,但不会删除数据(如镜像、容器)。列出的包包括旧命名(如docker-engine)、社区版(docker.io)和相关工具(如podman-docker,可能模拟Docker)。卸载确保干净环境,避免安装冲突。注意:/var/lib/docker/ 中的数据不会被移除;如果需要完全清理,参考卸载部分。
3. 设置Docker的APT仓库
为了从官方源获取最新稳定版Docker,需要添加Docker的APT仓库。这使用HTTPS安全传输和GPG密钥验证,确保软件来源可靠。
3.1 更新软件包索引并安装依赖:
bash
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
apt-get update刷新包列表。依赖包确保安全下载(ca-certificates验证HTTPS,curl下载文件)。创建 /etc/apt/keyrings 目录用于存储密钥,权限0755允许读取但限制修改。
3.2 下载并添加Docker官方GPG密钥:
bash
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
GPG密钥用于验证仓库中软件包的签名,防止篡改或伪造(公钥加密原理)。
curl -fsSL安全下载,chmod a+r使密钥可读。
3.3 添加Docker仓库源:
bash
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
这条命令动态创建仓库文件,指定架构(e.g., amd64)、签名密钥和Ubuntu代号(从 /etc/os-release 获取,如"noble" for 24.04)。"stable" 表示稳定分支。
tee重定向输出到文件,确保APT能从官方源获取包并验证真实性。最终更新索引以包含新仓库。
4. 安装Docker Engine/Docker Compose
仓库配置完成后,安装核心组件。Docker Engine包括守护进程(daemon)、CLI工具、容器运行时和插件。
4.1 安装最新版Docker包:
bash
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
原理说明:
docker-ce:核心引擎,管理容器。docker-ce-cli:命令行接口。containerd.io:容器运行时,处理生命周期。docker-buildx-plugin:增强构建工具,支持多架构镜像。docker-compose-plugin:Compose工具,用于多容器应用。-y自动确认。安装后,Docker服务通过systemd自动启动并设置为开机自启。
4.2 验证Docker服务状态:
bash
sudo systemctl status docker
如果未启动,手动启动:
bash
sudo systemctl start docker
sudo systemctl enable docker
systemctl检查和管理systemd服务。Docker创建docker.service,默认启用。这比ps aux | grep docker更可靠,因为它显示服务状态、日志和错误。
Docker Compose安装说明:在上面的安装过程中,我们已经安装了Docker Compose。它是通过安装
docker-compose-plugin包实现的,这是Docker Compose V2的官方插件形式(从Docker 20.10开始推荐使用)。在安装命令中:
bashsudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y这个包会启用
docker compose命令(注意是"docker compose",带空格,而不是旧版的"docker-compose")。要验证是否安装成功,可以运行:
bashdocker compose version如果输出类似 "Docker Compose version vx.x.x",则确认已安装。如果未显示,可能是权限问题(确保用户在docker组中)或安装失败,可重新运行安装命令。
5. 验证安装成功
运行测试容器以确认Docker正常工作。
5.1 运行hello-world容器:
bash
sudo docker run hello-world
此命令从Docker Hub拉取镜像,创建并运行容器。如果成功,输出欢迎消息,验证网络、存储和运行时组件。
5.2 查看Docker版本:
bash
docker version
显示客户端和服务器版本,确保安装完整。如果有问题,检查日志:
sudo journalctl -u docker。
6. 后置配置:允许非root用户运行Docker(推荐)
默认下,Docker命令需sudo,因为socket文件属于root。这不便且有安全风险。添加用户到docker组可实现非root访问。
6.1 创建docker组(如果不存在)并添加当前用户:
bash
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker # 或注销重新登录
groupadd创建组,usermod -aG添加用户。Docker socket (/var/run/docker.sock) 权限属于docker组,允许组成员无sudo运行命令。newgrp激活变更,提升用户体验并控制访问。
6.2 验证:
bash
docker ps
不使用sudo也能列出容器证明权限生效。
附加提示
- 升级Docker :运行
sudo apt-get update和安装步骤,选择新版本(用apt-cache madison docker-ce列出版本)。 - 常见问题排查:如果仓库添加失败,检查网络或代号。官方文档:https://docs.docker.com/engine/install/ubuntu/。
- 卸载Docker :
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin,然后移除 /var/lib/docker/ 和仓库文件。 - 安全考虑:从官方源安装,避免root滥用。探索rootless模式以进一步提升安全。
- 2025更新:支持最新Ubuntu版本(如25.10),仓库设置使用 /etc/apt/keyrings/docker.asc 和 .list 文件。包含新插件如buildx和compose。