Docker 安装 Ubuntu(保姆级教程)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观
一、前言:为什么选择 Docker 安装 Ubuntu?
在云计算和 DevOps 领域,Docker 已经成为构建、部署和运行应用程序的标准工具。对于编程初学者和中级开发者来说,掌握 Docker 安装 Ubuntu 的技能,不仅能提升开发效率,还能更好地理解容器化技术的核心价值。
Ubuntu 作为最受欢迎的 Linux 发行版之一,其与 Docker 的结合为开发者提供了轻量级、可移植的开发环境。通过 Docker 安装 Ubuntu,用户可以:
- 实现环境隔离:避免本地系统与开发环境的冲突
- 快速复制环境:确保团队成员使用相同的开发配置
- 节省资源:相比虚拟机,容器占用更少的硬件资源
本文将通过分步骤的讲解、代码示例和实际案例,帮助读者掌握 Docker 安装 Ubuntu 的完整流程,并理解其背后的技术原理。
二、Docker 基础概念:容器化技术的“集装箱”比喻
2.1 Docker 的核心概念
Docker 是一个开源的容器化平台,其核心概念包括:
| 术语 | 解释 |
|----------------|-------------------------------------------------------------------------|
| 镜像(Image) | 预配置的操作系统或应用程序快照,类似虚拟机的模板 |
| 容器(Container) | 从镜像启动的可运行实例,具有独立的文件系统和网络空间 |
| 仓库(Repository) | 存储和共享镜像的远程服务器,例如 Docker Hub |
形象比喻:可以把 Docker 镜像想象为“集装箱模板”,而容器则是根据模板制造的具体集装箱。仓库就像港口,存放着各种集装箱模板。
2.2 Ubuntu 镜像的作用
Ubuntu 镜像提供了标准的 Ubuntu 操作系统环境,用户可以通过 Docker 快速获取并运行该环境。例如,开发者可以在容器中安装特定版本的 Python、Node.js 或其他工具,而无需修改本地系统配置。
三、环境准备:安装 Docker
3.1 系统要求
Docker 支持主流操作系统:
- Linux(推荐 Ubuntu/Debian)
- Windows 10 专业版/企业版(需启用 Hyper-V)
- macOS(需安装 Docker Desktop)
3.2 在 Ubuntu 上安装 Docker
以 Ubuntu 22.04 为例,执行以下命令安装 Docker:
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt install docker-ce docker-ce-cli containerd.io
sudo docker --version
提示:若遇到权限问题,可将当前用户添加到 Docker 组:
sudo usermod -aG docker $USER
四、从镜像到容器:运行 Ubuntu 环境
4.1 拉取 Ubuntu 镜像
使用 docker pull
命令从 Docker Hub 获取官方 Ubuntu 镜像:
docker pull ubuntu:latest
4.2 启动第一个 Ubuntu 容器
执行以下命令运行容器并进入交互式终端:
docker run -it ubuntu:latest /bin/bash
-i
:保持 STDIN 打开-t
:分配伪终端/bin/bash
:指定容器启动后的默认命令
此时,终端会切换到 Ubuntu 容器的环境,用户可像操作本地系统一样安装软件:
apt update && apt install nano -y
4.3 理解容器生命周期
- 运行态:容器启动后处于运行状态,可通过
docker ps
查看 - 停止态:使用
docker stop <容器ID>
终止容器 - 删除容器:通过
docker rm <容器ID>
清理资源
五、进阶技巧:定制化 Ubuntu 容器
5.1 保存容器修改为新镜像
如果在容器中安装了特定软件,可以通过以下步骤保存为新镜像:
exit
docker commit <容器ID> my-ubuntu:1.0
docker images
5.2 使用 Dockerfile 自定义镜像
通过编写 Dockerfile
,可以更高效地定义镜像配置。示例如下:
FROM ubuntu:latest
ENV DEBIAN_FRONTEND=noninteractive
RUN apt update && apt install -y nano git curl
WORKDIR /app
COPY . /app
CMD ["bash"]
构建镜像:
docker build -t my-ubuntu:2.0 .
六、实战案例:在容器中开发 Python 应用
6.1 场景描述
假设需要开发一个 Python Web 应用,要求使用特定版本的 Python 和依赖库。
6.2 步骤分解
- 编写 Dockerfile
FROM ubuntu:latest
RUN apt update && apt install -y python3-pip
WORKDIR /app
COPY requirements.txt .
RUN pip3 install -r requirements.txt
COPY . .
CMD ["python3", "app.py"]
- 构建并运行容器
docker build -t python-app .
docker run -p 5000:5000 python-app
-p
:将容器的 5000 端口映射到主机
- 访问应用
在浏览器中访问http://localhost:5000
查看结果。
七、常见问题与解决方案
7.1 容器退出后数据丢失
原因:容器默认不持久化数据
解决方案:
- 使用
-v
参数挂载本地目录:docker run -v $(pwd)/data:/app/data ubuntu:latest
- 使用
docker commit
保存修改
7.2 端口冲突问题
现象:运行容器时报错 port is already allocated
解决方法:
- 修改映射端口:
docker run -p 5001:5000 ...
八、总结与展望
通过本文的讲解,读者已掌握了 Docker 安装 Ubuntu 的核心流程,并能通过实际案例理解其应用场景。Docker 容器化技术的优势在于:
- 一致性:确保开发、测试、生产环境完全一致
- 可移植性:容器可以在任何支持 Docker 的环境中运行
- 轻量高效:相比虚拟机,资源利用率提升显著
对于中级开发者,建议进一步探索以下方向:
- 使用 Docker Compose 管理多容器应用
- 结合 Kubernetes 实现容器编排
- 学习镜像安全与优化技巧
掌握 Docker 安装 Ubuntu 的技能,是迈向 DevOps 和云原生开发的重要一步。希望本文能为读者提供清晰的实践路径,并激发对容器化技术的持续探索兴趣。