【中级】Hello Docker:手把手带你学习容器开发
更新日志
| 版本 | 日 期 | 变更描述 |
|---|---|---|
| 1.0.0 | 2026-01-30 | 初始版本,包含在 AI 算力本 MTT AIBOOK(型号 A141) 上容器化开发的完整学习指南。 |
1. 项目简介
本教程旨在带您掌握基本的 Docker 核心概念与实操技能,学习如何在 MTT AIBOOK 设备上安装 Docker,拉取并运行镜像,构建自己的容器化 Python Web 应用,使用 VS Code 在容器中开发调试,最终将镜像发布到 Docker Hub。
难度:中级,适合有编程基础的开发者体验
Docker 简介: Docker 是一个开源的容器化平台,能够把应用程序及其依赖打包到一个标准化的单元中,并在任何支持 Docker 的环境中快速、稳定地运行。它的优势在于轻量、可移植、一致性强,非常适合开发、测试、部署现代应用。Docker 容器与虚拟机之间最大的区别就是,Docker 容器之间共用一个系统内核,而每个虚拟机都包含一个操作系统的完整内核,所以 Docker 比虚拟机更轻、更小,运行更快。
2. 前置条件
在开始本教程之前,请确保您已满足以下所有条件:
- 硬件:
- AI 算力本 MTT AIBOOK,型号 A141
- 软件:
- MTT AIBOOK 操作系统 AIOS(1.3.1-B15) 及以上版本
- 设备已配置管理员权限(可使用 sudo 命令)
- VS Code 代码编辑器
3. 环境部署
本章节描述如何在 MTT AIBOOK 上安装 Docker 并完成基础配置。
3.1 安装 Docker Engine
AI 算力本 MTT AIBOOK 基于 ARM 架构,运行 Linux(Ubuntu 系统)。Docker 通常来说,是基于 Linux 系统的容器化技术,我们可以选择使用 Docker Desktop 或 Docker Engine。但考虑到 Linux 系统对 Docker Engine 的原生支持,以及其轻量、高性能、无需额外虚拟化层的优势,更适合我们的开发环境和资源管理需求,因此我们选择安装和使用 Docker Engine CE,以便更高效地进行本地容器化开发。
安装 Docker
-
安装必要的依赖。
sudo apt-get install -y iptables arptables ebtablessudo apt install -y apt-transport-https ca-certificates curl software-properties-common -
添加 Docker 的官方 GPG 密钥。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg -
设置 Docker 的稳定版仓库。
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list -
更新 APT 包索引。
sudo apt update -
安装 Docker。
sudo apt install docker-ce=5:27.5.0-1~ubuntu.22.04~jammy \docker-ce-cli=5:27.5.0-1~ubuntu.22.04~jammy \containerd.io注意此处锁定 Docker 版本以确保教程一致性。如果安装失败,请尝试移除
=...部分以安装最新版本。 -
配置 iptables 使用 legacy 模式。
sudo update-alternatives --set iptables /usr/sbin/iptables-legacysudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacysudo update-alternatives --set arptables /usr/sbin/arptables-legacysudo update-alternatives --set ebtables /usr/sbin/ebtables-legacy -
验证 Docker 安装。
sudo systemctl status dockerdocker --version若能够输出正确的版本号则证明安装成功。
-
将当前用户添加到 docker 组。
sudo usermod -aG docker $USER重要提示:执行此命令后,请重启系统以使更改生效,后续无需使用 sudo 运行 Docker 命令。
4. 最佳实践
本章节指导您完成 Docker 的核心操作流程,从拉取镜像到本地构建和发布镜像。
场景 1: 拉取和查看镜像
学习如何从 Docker Hub 拉取镜像并查看本地镜像列表:
-
理解镜像命名规则。
Docker 镜像的完整名称格式为:
[registry/][namespace/] 镜像名:标签部分 说明 示例 registry 仓库的注册表地址 docker.io(Docker Hub,可省略)namespace 命名空间 dong413(作者名),library(官方命名空间)镜像名 镜像名称 simple-python-app标签 版本标签 latest(不写则表示最新版本) -
拉取镜像。
docker pull dong413/simple-python-app:latest此命令会从 Docker Hub 拉取一个简单的 Flask Web 应用镜像。
拉取过程:
latest: Pulling from dong413/simple-python-app37259e733066: Pull complete6e88b4602d85: Pull complete...Status: Downloaded newer image for dong413/simple-python-app:latest
-
查看本地镜像。
docker images输出示例:
REPOSITORY TAG IMAGE ID CREATED SIZEdong413/simple-python-app latest be349c17d241 7 months ago 171MB
小知识:Docker Hub 是 Docker 的官方镜像仓库,里面存放 成千上万的镜像。registry+ 命名空间 + 镜像名 组合起来叫做 repository(镜像库),一个镜像库用来存放同一镜像的不同版本。
场景 2: 创建和运行容器
学习如何从镜像创建容器并运行应用:
-
理解容器概念。
概念 说明 比喻 镜像(Image) 一个只读的模板,包含运行应用所需要的一切 像是做好的菜谱 容器(Container) 镜像运行之后的实例,是一个真正可执行的、正在运行的应用环境 像是照着菜谱做出来的一道菜 -
创建并运行容器。
docker run -d -p 5000:5000 dong413/simple-python-app:latest参数说明:
参数 说明 -d后台运行容器 -p 5000:5000端口映射,将容器的 5000 端口映射到宿主机的 5000 端口 dong413/simple-python-app:latest要运行的镜像名称 
-
查看运行中的容器。
docker ps此命令会显示当前正在运行的容器列表。 输出示例:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES367f16b7f92d dong413/simple-python-app:latest "python app.py" 7 seconds ago Up 6 seconds 0.0.0.0:5000->5000/tcp modest_wu
-
测试容器。
在浏览器中打开
http://localhost:5000如果网页可以正常打开,说明容器可正常运行。
常用命令说明:
| 命令 | 说明 |
|---|---|
docker run | 运行容器 |
docker ps | 查看正在运行的容器 |
docker run -p [HOST_PORT]:[CONTAINER_PORT] | 端口映射,让宿主机可以访问容器内的服务 |
docker run -v [宿主机路径]:[容器内路径] | 挂载数据卷或目录映射,实现数据持久化 |