下面给你一个在 Ubuntu 上写 Dockerfile 的实用入门指南,从基础结构到常见示例都有。
Dockerfile 是一个文本文件,里面是一系列指令,用来定义如何构建一个 Docker 镜像。
# 使用官方 Ubuntu 基础镜像
FROM ubuntu:22.04
# 设置非交互模式(避免 apt 安装时卡住)
ENV DEBIAN_FRONTEND=noninteractive
# 更新软件源并安装软件
RUN apt-get update && \
apt-get install -y curl vim && \
rm -rf /var/lib/apt/lists/*
# 设置工作目录
WORKDIR /app
# 拷贝本地文件到容器
COPY . /app
# 容器启动时执行的命令
CMD ["bash"]
在 Dockerfile 所在目录执行:
docker build -t my-ubuntu .
运行容器:
docker run -it my-ubuntu
| 指令 | 作用 |
|---|---|
| FROM | 指定基础镜像(必须是第一行) |
| RUN | 构建时执行命令 |
| CMD | 容器启动时执行(可被覆盖) |
| ENTRYPOINT | 容器主程序 |
| COPY | 拷贝文件到镜像 |
| ADD | 类似 COPY,支持 tar 和 URL |
| ENV | 设置环境变量 |
| WORKDIR | 设置工作目录 |
| EXPOSE | 声明端口 |
| USER | 指定运行用户 |
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install -y python3 python3-pip && \
rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY . /app
CMD ["python3", "app.py"]
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install -y nginx && \
rm -rf /var/lib/apt/lists/*
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
✅ 合并 RUN 减少镜像层
✅ 删除 apt 缓存
✅ 使用固定版本(ubuntu:22.04)
✅ 非 root 用户运行(安全性)
如果你有具体用途(比如:Web 服务 / 数据库 / AI 环境 / 编译环境),我可以帮你写一份完整可用的 Dockerfile。