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