从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"]
相关推荐
KubeSphere 云原生1 小时前
基于 KubeKey 3.1.9,快速部署 K8s 1.33.0 高可用集群
云原生·容器·kubernetes
三金C_C13 小时前
docker 部署 gin
docker·容器·gin
家庭云计算专家14 小时前
Portainer安装指南:多节点监控的docker管理面板-家庭云计算专家
docker
长勺14 小时前
docker常见考点
docker·容器
迢迢星万里灬15 小时前
Java求职者面试指南:DevOps技术栈深度解析
java·ci/cd·docker·kubernetes·jenkins·devops
喝养乐多长不高15 小时前
深入探讨redis:万字讲解集群
java·数据库·redis·docker·集群·集群扩容·数据分片算法
玩电脑的辣条哥17 小时前
如何用docker部署ELK?
elk·docker·容器
棠十一18 小时前
nacos Sentinel zipkin docker运行
java·开发语言·eureka
Chuncheng's blog18 小时前
CentOS 7 安装docker缺少slirp4netnsy依赖解决方案
运维·docker·容器
我的golang之路果然有问题21 小时前
GO+RabbitMQ+Gin+Gorm+docker 部署 demo
笔记·后端·学习·docker·golang·rabbitmq·gin