当前位置: 首页 > 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"]
http://www.xdnf.cn/news/353107.html

相关文章:

  • `待办事项css样式
  • electron 结合 react(cra创建的) 创建桌面应用和打包桌面应用
  • 2025年API安全防御全解析:应对DDoS与CC攻击的智能策略
  • rtsp,。。。。
  • 现代框架对SEO的深度影响
  • 【概念解读】开发中遇到的概念阶段
  • RuntimeError: expected scalar type ComplexDouble but found Float
  • 计算机视觉与深度学习 | 视觉+激光雷达+惯惯性SLAM算法汇总(原理,公式,代码)
  • Java中的分布式缓存与Memcached集成实战
  • 电压取样端口静电浪涌防护方案 之6TS Series瞬态抑制器TVS
  • hz2新建Keyword页面
  • 使用 swift 微调 Qwen3-4b 模型
  • 矩阵短剧系统:如何用1个后台管理100+小程序?深度解析多端绑定技术
  • C++--类中this指针的讲解
  • 从数据孤岛到智能工厂:RG3000边缘网关的数字化转型实践
  • Mac QT水平布局和垂直布局
  • 小红书视频无水印下载方法
  • AI技术与园区运营的深度融合:未来生态型园区的建设路径
  • VS Code配置指南:打造高效的QMK开发环境
  • 老旧 LabVIEW 系统升级改造
  • 系统的从零开始学习电子的相关知识,该如何规划?你是工作了18年的电子工程师,请给出你的建议
  • 三维GIS开发cesium智慧地铁教程(6)添加模型
  • 31【干货】Arcgis属性表常用查询表达式实战大全
  • 基于Java和GeoTools的根据矢量BBOx自动生成格网文件实践
  • 基于C++的多线程网络爬虫设计与实现(CURL + 线程池)
  • Java游戏服务器开发流水账(3)游戏数据的缓存简介
  • 第04章—技术突击篇:如何根据求职意向进行快速提升与复盘
  • 数据库索引
  • 使用Java处理多客户端服务器:从传统线程到虚拟线程
  • [250509] x-cmd 发布 v0.5.11 beta:x ping 优化、AI 模型新增支持和语言变量调整