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 步骤分解

  1. 编写 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"]  
  1. 构建并运行容器
docker build -t python-app .  
docker run -p 5000:5000 python-app  
  • -p:将容器的 5000 端口映射到主机
  1. 访问应用
    在浏览器中访问 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 和云原生开发的重要一步。希望本文能为读者提供清晰的实践路径,并激发对容器化技术的持续探索兴趣。

最新发布