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

从Dockfile开始

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"]
相关推荐
功德+n8 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
小敬爱吃饭9 小时前
Ragflow Docker部署及问题解决方案(界面为Welcome to nginx,ragflow上传文件失败,Docker中的ragflow-cpu-1一直重启)
人工智能·python·nginx·docker·语言模型·容器·数据挖掘
木子欢儿9 小时前
Docker Hub 镜像发布指南
java·spring cloud·docker·容器·eureka
coppher10 小时前
Ubuntu 22.04 amd64 离线安装 Docker 完整教程
linux·docker
虚伪的空想家12 小时前
k8s集群configmap和secrets备份脚本
linux·容器·kubernetes
SXJR12 小时前
k8s中的Pod
云原生·容器·kubernetes
文静小土豆12 小时前
K8s 滚动更新在 Java 应用中的实践与优化
java·容器·kubernetes
w61001046613 小时前
CKA-2026-Ingress
云原生·容器·kubernetes·cka
bloglin9999913 小时前
docker logs 如何一直监听日志输出
运维·docker·容器
说实话起个名字真难啊14 小时前
Docker 入门之网络基础
网络·docker·php