游乐游手机版
首页/系统平台/文章详情

从零开始Docker Dockerfile脚本的基本使用指南与实例详解

时间:2026-06-16 07:58
Dockerfile 本质上是一种自动化构建脚本,它通过一系列命令与参数在基础镜像上逐层叠加,最终生成全新的镜像。整个过程以 FROM 指令为起点,随后进行配置、安装、文件复制等操作,输出可直接用于创建容器的成品。可以说,Dockerfile 使镜像构建具备可重复性和可追溯性,显著简化了容器化部署的

Dockerfile 本质上是一种自动化构建脚本,它通过一系列命令与参数在基础镜像上逐层叠加,最终生成全新的镜像。整个过程以 FROM 指令为起点,随后进行配置、安装、文件复制等操作,输出可直接用于创建容器的成品。可以说,Dockerfile 使镜像构建具备可重复性和可追溯性,显著简化了容器化部署的复杂度。

Dockerfile 语法

实际编写 Dockerfile 前,建议先了解其语法规范,掌握指令结构与书写格式。

所谓语法,就是计算机执行指令与参数的一套规则。Dockerfile 语法设计简洁直观,支持注释、指令自解释且结构清晰,即使没有额外文档也能快速理解。如果语法编写错误,构建过程会直接报错,因此遵循规范是首要原则。

语法示例

Dockerfile 内容包含注释(以 # 开头)与命令(指令+参数)两部分。

一个最简单的示例如下:

# Print "Hello docker!"
RUN echo "Hello docker!"

Dockerfile 命令详解

Dockerfile 提供十余条指令用于构建镜像,以下逐一介绍最常用的命令。

FROM

FROM 
或
FROM :

FROM 指令指定基础镜像,所有后续操作均在此基础上执行,且必须置于 Dockerfile 首行。例如 FROM ubuntu,若未指定 tag,则默认使用 latest;若镜像不存在,构建将直接失败。

RUN

RUN    # shell 格式,默认用 /bin/sh -c 执行
RUN ["executable", "param1", "param2"]  # exec 格式

RUN 指令在当前镜像中执行命令,并将结果提交为新的一层。相当于手动执行 docker run image command 后再执行 docker commit 的组合操作。

注释

注释以 # 开头,用于说明代码逻辑,不参与镜像构建。如下示例:

# 这是注释
FROM ubuntu
# 更新源
RUN echo "deb https://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
RUN apt-get update

MAINTAINER

MAINTAINER 

MAINTAINER 指令用于标注镜像维护者的姓名和联系方式,相当于镜像的作者标签。例如:

MAINTAINER Guillaume J. Charmes, guillaume@dotcloud.com

ENTRYPOINT

ENTRYPOINT cmd param1 param2        # shell 格式
ENTRYPOINT ["cmd", "param1", "param2"]  # exec 格式

ENTRYPOINT 指令用于配置容器启动时执行的默认命令。例如:

FROM ubuntu
ENTRYPOINT echo "Welcome!"
# 启动后输出 Welcome!

USER

USER daemon

USER 指令指定后续命令及容器启动后进程的运行用户。常与 ENTRYPOINT 配合使用,例如让 memcached 以 daemon 用户身份运行:

ENTRYPOINT ["memcached"]
USER daemon

EXPOSE

EXPOSE  [...]

EXPOSE 指令声明容器内需要暴露的端口,便于外部与其通信。例如 memcached 默认监听 11211 端口:

EXPOSE 11211

以下为完整的 Memcached 镜像 Dockerfile 构建示例:

# Memcached
# VERSION 2.2
FROM ubuntu
MAINTAINER Victor Coisne victor.coisne@dotcloud.com
# 更新源(国内建议换成 163 或 sohu 的源,不然太慢)
RUN echo "deb https://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
RUN apt-get update
# 安装 memcached
RUN apt-get install -y memcached
# 设置启动命令
ENTRYPOINT ["memcached"]
# 以 daemon 用户运行
USER daemon
# 暴露端口
EXPOSE 11211

实际构建过程中(以 163 源为例),执行以下命令:

docker build -t tankywoo - < Dockerfile
# 输出会显示每一步的提交,最终生成镜像
Step 0 : FROM ubuntu
Step 1 : MAINTAINER Victor Coisne ...
...
Successfully built 666c5d65f396

ENV

ENV  

ENV 指令用于设置环境变量,后续 RUN 命令可直接引用。生成的容器中会保留这些变量,通过 docker inspect 可查看,例如:

"Env": [
    "name=tanky",
    "HOME=/",
    "PATH=/usr/local/sbin:..."
]

同时可在 docker run 时临时覆盖环境变量:docker run -i -t --env name="tanky" ubuntu:newtest /bin/bash

ADD

ADD  

ADD 指令将构建上下文中的文件或目录复制到容器内的指定路径。src 支持本地相对路径或远程 URL,dest 必须是容器内的绝对路径。

VOLUME

VOLUME [""]

VOLUME 指令创建一个挂载点,用于容器与宿主机之间的目录共享。例如 VOLUME ["/data"]

WORKDIR

WORKDIR /path/to/workdir

WORKDIR 指令设置后续 RUNCMDENTRYPOINT 的执行工作目录。可多次使用,若为相对路径则基于上一个 WORKDIR。例如:

WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd
# 实际在 /a/b/c 下执行 pwd

CMD

CMD ["executable","param1","param2"]   # exec 格式
CMD ["param1","param2"]                # 作为 ENTRYPOINT 的默认参数
CMD command param1 param2              # shell 格式

CMD 指令提供容器启动时的默认执行命令。一个 Dockerfile 中仅允许存在一条 CMD 指令,若出现多条,仅最后一条生效。

来源:https://www.jb51.net/os/other/392845.html
上一篇VMware虚拟机Linux系统设置固定IP教程 下一篇从零开始掌握Docker容器技术:基本概念全面讲解
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Win10如何启用文件历史记录自动备份与实时保护
系统平台 · 2026-07-12

Win10如何启用文件历史记录自动备份与实时保护

Windows10文件历史记录可自动保存文件历史版本,需要手动开启并连接外部NTFS存储设备。可通过设置应用、控制面板或PowerShell三种方式启用。推荐将备份频率设为每10分钟,并将保留时间设为永远,以最大限度保护数据安全。

Win11应用商店提示我们这边出了点问题报错代码
系统平台 · 2026-07-12

Win11应用商店提示我们这边出了点问题报错代码

Win11应用商店报错0x80131500,可依次执行:运行wsreset exe清缓存;重启BITS、WindowsUpdate等服务;改DNS为8 8 8 8和1 1 1 1;启用TLS1 2和1 3;重装商店及依赖组件。

Win11电脑频繁弹出系统更新强制升级提醒的解决方法
系统平台 · 2026-07-12

Win11电脑频繁弹出系统更新强制升级提醒的解决方法

通过禁用WindowsUpdate、UsoSvc和BITS三项服务,修改注册表将NoAutoUpdate设为1,并禁用任务计划中的ScheduledStart,可彻底关闭Win11系统更新强制弹窗,避免全屏工作被打断,实现永久禁用自动更新。

Windows 11关闭窗口顶部毛玻璃透明磨砂效果方法
系统平台 · 2026-07-12

Windows 11关闭窗口顶部毛玻璃透明磨砂效果方法

Windows11关闭窗口顶部毛玻璃特效需四步:在个性化颜色中关闭透明效果,在辅助功能视觉效果中同步关闭透明与动画,通过注册表禁用EnableTransparentOMAX渲染通道,最后重启资源管理器清除缓存,即可彻底消除磨砂透明。

Windows 11 电脑自动休眠时长修改方法
系统平台 · 2026-07-12

Windows 11 电脑自动休眠时长修改方法

Windows11修改电脑自动休眠时长可通过系统设置、控制面板和命令提示符三种途径实现。系统设置直接调整睡眠时间,控制面板可精细控制屏幕关闭与休眠独立计时器,命令提示符支持毫秒级精确设定。需注意休眠时间应大于等于屏幕关闭时间,避免中断任务。