温馨提示×

ubuntu docker如何写dockerfile

小樊
48
2026-09-16 12:34:03
栏目: 智能运维

下面给你一个在 Ubuntu 上写 Dockerfile 的实用入门指南,从基础结构到常见示例都有。


一、Dockerfile 是什么?

Dockerfile 是一个文本文件,里面是一系列指令,用来定义如何构建一个 Docker 镜像。


二、最简 Dockerfile 示例(基于 Ubuntu)

# 使用官方 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

四、常用 Dockerfile 指令说明

指令 作用
FROM 指定基础镜像(必须是第一行)
RUN 构建时执行命令
CMD 容器启动时执行(可被覆盖)
ENTRYPOINT 容器主程序
COPY 拷贝文件到镜像
ADD 类似 COPY,支持 tar 和 URL
ENV 设置环境变量
WORKDIR 设置工作目录
EXPOSE 声明端口
USER 指定运行用户

五、Ubuntu + Python 示例

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"]

六、Ubuntu + 后台服务(如 Nginx)

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。

0 踩