1. 什么是 Docker 以及它与 Ubuntu 的关系
Docker 是一种虚拟化技术,它将应用程序运行时环境打包成称为“容器”的单元,使其能够在不同的服务器和计算机上保持一致地运行。与传统的虚拟机不同,Docker 直接在宿主操作系统上运行容器,从而显著降低资源占用并提升速度。
基于 Linux 的操作系统(如 Ubuntu)特别适合运行 Docker,这也是 Docker 被企业、个人开发者以及服务器管理员广泛采用的原因。Ubuntu 本身是开源的,广泛用于服务器环境,拥有便捷的包管理系统,并且拥有丰富的官方文档支持。
使用 Docker 可以消除常见的 “在我的机器上可以运行,但在服务器上不行” 的问题。无论是在开发 PC 还是生产服务器上,Docker 容器都能让你在任何地方复现完全相同的环境。Ubuntu 也是 Docker 官方支持的系统,因而安装指南和故障排除资源非常丰富。
本文将清晰地说明如何在 Ubuntu 上安装 Docker 并启动一个 Ubuntu 容器。无论你是 Docker 新手还是已有经验,本指南都能帮助你巩固基础知识。
2. 必要的环境和前置条件
在 Ubuntu 上使用 Docker 之前,需要满足若干前置条件并进行检查。本节概述所需的环境以及提前确认的重要要点,以确保安装过程顺利进行。
Ubuntu 版本
Docker 推荐在 Ubuntu 18.04 LTS 或更高版本上运行。长期支持(LTS)版本,如 Ubuntu 20.04 LTS、Ubuntu 22.04 LTS 和 Ubuntu 24.04 LTS,得到特别好的支持。较旧的版本可能会遇到依赖或包冲突问题,强烈建议使用最新的 LTS 版本。
系统要求
虽然 Docker 本身轻量,但运行多个容器或用于开发、测试时仍需要足够的系统资源。建议的最低规格如下:
- 64 位 Ubuntu(不支持 32 位)
- CPU:建议 2 核或以上
- 内存:至少 2 GB(推荐 4 GB 或以上)
- 可用磁盘空间:至少 10 GB
网络连接
安装 Docker 并下载镜像需要网络连接。首次设置可能会下载大量数据,建议使用稳定的网络环境。
用户权限
安装 Docker 和管理系统设置需要 sudo(管理员)权限。如果你只有普通用户权限,请申请临时权限或寻求管理员协助。
移除旧的 Docker 包
如果之前手动安装过 docker 或 docker.io 等包,建议先卸载它们,以免产生冲突。
sudo apt-get remove docker docker-engine docker.io containerd runc
这可以防止因遗留旧包导致的潜在问题。
小结
确认完本节的前置条件后,即可在后续章节中进行安装和配置。做好充分准备,Ubuntu 上的 Docker 安装过程将非常顺畅。
3. 安装并配置 Docker Engine
本节说明如何在 Ubuntu 上安装 Docker Engine 并进行基础配置。使用官方 Docker 仓库可确保获取最新的稳定版本。
添加官方仓库及准备工作
首先,将 Docker 官方仓库添加到 apt 源中。所有操作均在终端完成。
- 安装所需软件包
sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release
- 添加 GPG 密钥
sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- 添加 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
安装 Docker 引擎
添加仓库后,安装 Docker 引擎。
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
安装完成后,通过检查版本来验证:
docker --version
如果看到类似 Docker version 25.0.3 的输出,说明安装成功。
关于 Docker Desktop(可选)
在 Ubuntu 上,Docker 引擎通常已经足够。如果需要图形界面,也可以使用 Linux 版 Docker Desktop,但对于基于 CLI 的工作流,单独的 Docker 引擎已经绰绰有余。
安装问题排查
如果遇到诸如“未找到软件包”等错误,请仔细检查仓库配置和 GPG 密钥设置。旧的 Docker 包冲突也可能导致问题,如有必要,请重新执行卸载步骤。
4. 在不使用 sudo 的情况下使用 Docker
默认情况下,Docker 命令需要 sudo 权限。每次都使用 sudo 不仅不方便,而且如果命令输入错误也会有风险。
推荐的做法是将你的用户账户加入 docker 组,这样即可安全地在不使用 sudo 的情况下使用 Docker。
将用户添加到 docker 组
- 将当前用户添加到 docker 组
sudo usermod -aG docker $USER
- 应用更改
注销并重新登录以使新的组成员身份生效。
或者,你可以立即使用以下方式应用:
newgrp docker
- 验证
docker version
安全说明
docker 组的用户拥有提升的权限。在多用户环境中,需要谨慎管理 docker 组成员。对于个人或开发使用,这通常不是问题。
5. 启动 Docker 守护进程并启用自动启动
Docker 以后台服务的形式运行,称为 Docker 守护进程(dockerd)。虽然它通常在安装后自动启动,但了解如何管理它仍然很重要。
启动、停止和重启 Docker
sudo systemctl start docker
sudo systemctl stop docker
sudo systemctl restart docker
sudo systemctl status docker
在启动时启用或禁用自动启动
sudo systemctl enable docker
sudo systemctl disable docker
查看日志
journalctl -u docker
6. 启动 Ubuntu 容器
本节说明如何在 Docker 上实际启动 Ubuntu 容器。
拉取 Ubuntu 镜像
docker pull ubuntu:22.04
运行 Ubuntu 容器
docker run -it --name myubuntu ubuntu:22.04 /bin/bash
后台运行
docker run -d --name myubuntu ubuntu:22.04 tail -f /dev/null

停止和重启容器
docker stop myubuntu
docker start myubuntu
检查容器状态
docker ps
docker ps -a
7. 容器管理的基本 Docker 命令
本节总结了日常操作中常用的 Docker 命令。
列出容器
docker ps
docker ps -a
启动、停止、重启
docker start [container]
docker stop [container]
docker restart [container]
访问容器
docker exec -it [container] /bin/bash
删除容器和镜像
docker rm [container]
docker rm -f [container]
docker images
docker rmi [image]
日志和磁盘使用情况
docker logs [container]
docker system df
8. 故障排查与常见问题
本节涵盖常见的 Docker 问题及其解决方法。
无法连接到 Docker 守护进程
确保 Docker 正在运行,并且你的用户拥有相应的权限。
软件包冲突
sudo apt-get remove docker docker-engine docker.io containerd runc
容器启动失败
检查镜像名称、可用内存和磁盘空间。
9. 总结与后续步骤
本文介绍了在 Ubuntu 上安装 Docker 并运行 Ubuntu 容器的过程,涵盖了基本概念到实际使用。
后续步骤
- 使用 Dockerfile 构建自定义镜像
- 使用 Docker Compose 管理多个容器
- 使用卷和网络
- 探索使用 Kubernetes 进行容器编排
10. 常见问题
本节回答了与 Ubuntu 上 Docker 相关的常见问题。
Docker 能否在 Ubuntu Desktop 和 Server 上使用?
是的。由于资源占用更低,Ubuntu Server 通常更适合生产环境。
是否需要 Docker Desktop?
不需要。仅 Docker Engine 在 Ubuntu 上即可满足需求。
什么是无根模式?
无根模式允许 Docker 在不使用 root 权限的情况下运行,提高了安全性,但也有一些限制。
如何持久化数据?
docker run -v /host/path:/container/path ubuntu:22.04
如何自动启动容器?
docker run --restart=unless-stopped -d ubuntu:22.04


