Python学习【172】:Docker 从零搭建 Python + Nginx + MySQL 开发环境:一个完整的实战记录
很多时候,我们看 Docker 教程,总是被镜像加速、端口映射、数据卷挂载这些概念绕晕。这篇文章记录了从一台 Ubuntu 虚拟机开始,解决网络问题、配置镜像源、拉取 Nginx/MySQL/Python 镜像,并最终让一个 Python Web 服务跑在浏览器里的完整过程。所有步骤均实测通过。- 虚拟机系统:Ubuntu 22.04(已安装 Docker)
- 目标:在 Docker 中运行 Nginx、MySQL、Python 应用,并能通过 Windows 浏览器访问
如果你的虚拟机还没装 Docker,请先执行 sudo apt install docker.io 并启动服务。编辑 /etc/docker/daemon.json:`sudo nano /etc/docker/daemon.json`写入以下内容(多个备用源,只要有一个可用就能拉取):sudo systemctl restart docker
如果拉取过程中出现 connection reset by peer 等网络错误,多试几次即可,Docker 会断点续传。在虚拟机浏览器访问 http://localhost:8080,看到 Nginx 欢迎页即成功。运行 Python Web 服务(输出 “hello, docker”)访问 http://虚拟机IP:5000,看到 hello, docker。Docker 最大的优势就是“一次构建,到处运行”。下面是标准的移植流程:- 导出镜像(在源机器上) 将需要用到的镜像保存为 .tar 文件:

- 传输文件 将 .tar 文件通过 U 盘、网络共享或 scp 复制到目标机器。
- 导入镜像(在目标机器上)

- 迁移数据卷(如果需要保留 MySQL 数据) 源机器上 MySQL 的数据卷挂载在 ~/docker/mysql/data,将该目录整体打包:

传输到目标机器后解压到相同路径,并确保 Docker 运行 MySQL 时仍然挂载该目录。
在目标机器上使用相同的 docker run 命令(注意端口冲突和路径一致性)即可。我们从一个干净的 Ubuntu 虚拟机出发,解决了 Docker 镜像拉取慢的问题,依次运行了 Nginx、MySQL 和 Python Web 服务,最终在浏览器中看到了 hello, docker。这个简单的例子展示了 Docker 的核心价值:环境隔离、快速部署、一次构建到处运行。让我们保持学习的热情,2026年一马当先、马到成功!