当前位置: 首页 > news >正文

从Dockerfile 构建docker镜像——保姆级教程

从Dockfile开始

        • dockerfile简介
        • 开始构建
          • 1、编辑dockerfile
          • 2、构建镜像
          • 3、拉取镜像
          • 4、推送到镜像仓库
        • 镜像的优化
          • 1、优化的基本原则
          • 2、多阶段构建

dockerfile简介
开始构建
1、编辑dockerfile
# 使用官方的 Python 3.8 镜像作为基础镜像
FROM python:3.8-slim# 设置工作目录
WORKDIR /app# 将当前目录下的所有文件复制到容器的 /app 目录
COPY . /app# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt# 暴露端口
EXPOSE 80# 定义环境变量
ENV NAME World# 运行应用程序
CMD ["python", "app.py"]
2、构建镜像
docker build -t my-python-app .
3、拉取镜像
docker pull ubunu#查看是否拉取成功
docker images
4、推送到镜像仓库
docker login   #需要先注册镜像仓库的账号
docker tag my-python-app username/my-python-app
docker push username/my-python-app

Docker 镜像由多个层组成,每一层代表 Dockerfile 中的一个指令。这种分层结构使得镜像的构建和分发更加高效,因为只有发生变化的层需要重新构建或传输。

镜像的优化

为了减少镜像的大小,可以采取以下措施:

1、优化的基本原则
使用更小的基础镜像(如 alpine 版本)。
合并多个 RUN 指令以减少层数。
使用 .dockerignore 文件排除不必要的文件。
2、多阶段构建

多阶段构建是一种优化镜像大小的技术,允许在构建过程中使用多个临时镜像,最终只保留必要的文件和层。以下是一个多阶段构建的示例:

# 第一阶段:构建应用程序
FROM golang:1.16 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp .# 第二阶段:运行应用程序
FROM alpine:latest
WORKDIR /root/
COPY --from=builder /app/myapp .
CMD ["./myapp"]

相关文章:

  • Docker容器启动失败?无法启动?
  • Day 15 训练
  • 基于springboot的海洋环保知识分享系统的设计与实现
  • 如何减少极狐GitLab 容器镜像库存储?
  • springboot ResetController RequestMapping 注解
  • VSCode如何解决打开html页面中文乱码的问题
  • 【MySQL】联合查询
  • 共模电感在开关电源交流侧的应用原理与原因
  • 【Git】查看tag
  • 数据分析与逻辑思维:六步解决业务难题;参考书籍《数据分析原理:6步解决业务分析难题 (周文全, 黄怡媛, 马炯雄)》
  • 【PmHub后端篇】PmHub整合TransmittableThreadLocal (TTL)缓存用户数据
  • 五、【LLaMA-Factory实战】模型部署与监控:从实验室到生产的全链路实践
  • `待办事项css样式
  • vue3: pdf.js5.2.133 using typescript
  • Spring Web MVC快速入门
  • Android对工程中的String中文字符的整理
  • Android framework功能配置开发
  • logback日志输出到项目运行目录
  • qtcreater配置opencv
  • 探索大型语言模型的 LLM 安全风险和 OWASP 十大漏洞
  • 2025年4月份CPI环比由降转涨,核心CPI涨幅稳定
  • 泰特现代美术馆25年:那些瞬间,让艺术面向所有人
  • 欧洲史上最严重停电事故敲响警钟:能源转型如何保证电网稳定?
  • 总奖池超百万!第五届七猫现实题材征文大赛颁奖在即
  • 中国以优化营商环境为支点,为全球企业提供可预期市场环境
  • 杭温高铁、沪苏湖高铁明起推出定期票和计次票,不限车次执行优惠折扣