当前位置:首页>Linux>Linux系统---Docker容器技术2

Linux系统---Docker容器技术2

  • 2026-08-26 09:10:59
Linux系统---Docker容器技术2

点击蓝字,关注我!

Docker容器技术

4

Dockerfile

Dockerfile是什么?

— Dockerfile是一种更强大的镜像制作方式

— 编写类似脚本的Dockerfile文件,通过该文件制作镜像

如何使用Dockerfile制作镜像?

— 编写Dockerfile文件

— docker build -t 镜像名称:标签 Dockerfile所在目录

Dockerfile 核心指令

5

Docker 镜像构建流程

编写 Dockerfile:

在指定目录(如myimg/)创建Dockerfile文件;

构建镜像:

docker build -t 镜像名:标签 构建上下文目录

(如docker build -t img:v1 myimg/);

运行容器:

docker run -it --rm 镜像名:标签

(--rm表示容器停止后自动删除);

覆盖 CMD:

docker run后传参可覆盖CMD

(如docker run -it --rm img:v1 id,会执行id而非CMD的命令)。

6

关键扩展场景

1. ADD vs COPY的选择

仅复制文件:用COPY(更明确);

需要解压 tar 包 / 下载 URL:用ADD(但下载 URL 建议改用RUN wget/curl,更可控)。

2. CMD vs ENTRYPOINT的配合

3. 镜像分层优化

RUN合并命令减少层数(用&&连接,\换行);

频繁变化的指令(如COPY代码)放在 Dockerfile 末尾,利用镜像缓存加速构建。

7

拓展

除了之前提到的指令,Dockerfile 还有这些常用指令,覆盖镜像构建的更多场景:

一、镜像构建相关

1. ARG

作用:定义构建时的变量(仅在docker build阶段有效,容器运行时不可用)。

示例:

ARG VERSION=1.0  # 定义变量,默认值1.0

RUN wget https://example.com/app-${VERSION}.tar.gz

构建时传参:docker build --build-arg VERSION=2.0 -t 镜像名 .

2. ONBUILD

作用:给 “基础镜像” 添加触发指令,当该镜像被作为其他镜像的FROM基础时,自动执行ONBUILD后的命令。

示例(基础镜像的 Dockerfile):

ONBUILD COPY app /app  # 后续基于此镜像构建时,会自动执行COPY

二、容器配置相关

1. VOLUME

作用:声明容器的挂载卷(持久化数据),避免容器删除时数据丢失。

示例:

VOLUME ["/data"]  # 容器启动时,/data会自动挂载为卷

扩展:实际使用时,建议用docker run -v 主机路径:容器路径手动挂载(更灵活)。

2. HEALTHCHECK

作用:定义容器健康检查的命令,Docker 会定期执行以判断容器状态。

示例:

HEALTHCHECK --interval=30s --timeout=5s --retries=3 \  CMD curl -f http://localhost:80 || exit 1

参数:

--interval:检查间隔(默认 30s);

--timeout:检查超时(默认 30s);

--retries:失败重试次数(默认 3)。

三、其他辅助指令

1. LABEL

作用:给镜像添加元数据(如作者、版本),便于管理。

示例:

LABEL maintainer="xxx@example.com" version="1.0" description="Nginx镜像"

查看:docker inspect 镜像名可看到Labels字段。

2. SHELL

作用:指定容器内的默认 Shell(默认是/bin/sh)。

示例:

dockerfile

SHELL ["/bin/bash", "-c"]  # 后续RUN指令用bash执行

 公众号 丨初见别辞

点击图片,长按保存

最新文章

随机文章