在日常开发中,我们经常需要一个统一的 Python 运行环境。虽然 Docker Hub 上已经提供了官方的 python 镜像,但有时我们希望:

  • 使用指定版本的 Ubuntu 作为基础镜像;

  • 安装特定版本的 Python(比如 3.8);

  • 配置好 时区、语言环境、pip 源

  • 在私有镜像仓库中统一管理,方便团队复用。

这篇文章将带你从零开始,编写一个基于 Ubuntu 20.04 的 Python 私有基础镜像。

一、准备工作

在开始之前,请确认你已经安装好以下工具:

  • Docker(>=20.x)

  • 一个私有镜像仓库(如 Harbor、阿里云 ACR、Docker Hub 私有仓库)

目录结构如下:
.
├── Dockerfile

二、编写 Dockerfile

我们基于 ubuntu:20.04 搭建 Python 环境。完整的 Dockerfile 如下:

# 基础镜像
FROM ubuntu:20.04

# 设置非交互模式,避免 tzdata 等交互
ENV DEBIAN_FRONTEND=noninteractive

# 更新源并仅安装 Python3.8 + pip
RUN apt-get update && apt-get install -y \
    python3.8 \
    python3-pip \
    python3-venv \
    && rm -rf /var/lib/apt/lists/*

# 设置时区和语言环境
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get update && apt-get install -y locales \
    && locale-gen en_US.UTF-8 zh_CN.UTF-8

ENV LANG=zh_CN.UTF-8
ENV LANGUAGE=zh_CN:zh
ENV LC_ALL=zh_CN.UTF-8

# 设置默认 python 命令为 python3
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 1

# 默认工作目录
WORKDIR /workspace

# 默认启动命令
CMD [ "python", "--version" ]

主要功能说明:

  1. 基础镜像:选用 ubuntu:20.04,兼容性强,适合企业环境。

  2. 安装 Python:通过 apt-get 安装 Python3.8、pip、venv。

  3. 时区配置:默认设置为 Asia/Shanghai,避免容器内时间错乱。

  4. 语言环境:安装 locales,支持中文和英文输出,防止乱码。

  5. 别名设置:将 python 映射到 python3,保持习惯一致。

  6. 工作目录:统一放在 /workspace

  7. 默认启动命令:进入容器后默认打印 Python 版本。


三、构建镜像

Dockerfile 所在目录执行:

docker build -t ubuntu-python:3.8 .

运行成功截图:

构建完成后验证:

docker run -it --rm ubuntu-python:3.8

测试结果如下,该结果说明镜像已经构建成功。

四、推送到私有仓库

假设你有一个私有仓库地址为 registry.example.com,可以这样推送:

# 登录仓库
docker login registry.example.com

# 打 tag
docker tag ubuntu-python:3.8 registry.example.com/base/python:3.8

# 推送
docker push registry.example.com/base/python:3.8

这样团队成员只需要:

docker pull registry.example.com/base/python:3.8

即可直接使用你定制好的 Python 环境。

五、总结

通过本文,我们完成了一个 基于 Ubuntu 的 Python 基础镜像

  • 解决了时区和语言环境问题;

  • 内置 Python3.8 与 pip;

  • 可直接推送到私有仓库,方便团队统一使用。

在实际项目中,你还可以继续扩展,比如:

  • 配置 pip 国内镜像源

  • 安装常用依赖包(如 requestsflask);

  • 加入企业级 CI/CD 流程,自动构建和发布镜像。

这样就能真正打造一个适合自己团队的 Python 私有基础镜像。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐