【Docker】之 Dockerfile 指令详解

目录



Dockerfile 基本结构


Dockerfile 由一行行命令语句组成,并且支持以 # 开头的注释行。Dockerfile 的内容分为四个部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。例如:

# This dockerfile uses the Ubuntu image
# VERSION 1.0
# Author: wangtingyun
# Command format: Instruction [arguments / command] …

# 第一行必须指定基于的容器镜像
FROM ubuntu

# 维护者信息
MAINTAINER wangtingyun wangtingyun@email.com

# 镜像的操作指令
RUN echo “deb http://archive.ubuntu.com/ubuntu/ raring main universe” >> /etc/apt/sources.list
RUN apt-get update && apt-get install -y nginx
RUN echo “\ndaemon off;>> /etc/nginx/nginx.conf

# 容器启动时执行指令
CMD /usr/sbin/nginx

其中:

  • 一开始必须指明所基于的镜像名称,接下来一般会说明维护者的信息;
  • 后面则是镜像操作指令,例如 RUN 指令,RUN 指令将对镜像执行跟随的命令,而每运行一条 RUN 指令,镜像添加新的一层,并提交;
  • 最后是 CMD 指令,来指定运行容器时的操作命令。

Dockerfile 指令


FROM

功能: 指定一个镜像作为构建自定义镜像的基础镜像,构建的镜像在这个基础镜像之上进行修改定制。

指令格式:

FROM <image>:<tag>

这个指令是 Dockerfile 中的必备指令,同时也必须是第一条指令,如果在同一个 Dockerfile 中创建多个镜像时,可以使用多个 FROM 指令。


MAINTAINER

功能: 指定维护者信息。

格式为:

MAINTAINER <name>

注意: MAINTAINER 已经被抛弃了,建议使用 LABEL 指令。


LABEL

功能: 为镜像添加元数据标签,一个 LABEL 就是一个键值对。

格式如下:

LABEL <key>=<balue> <key>=<balue> ...

示例如下:

LABEL maintainer="wangtingyun@email.com"
LABEL version="1.0"

可以给镜像添加多个 LABEL需要注意的是:每条 LABEL 指令都会生成一个新的层。所以最好是把添加的多个 LABEL 合并为一条命令:

# 写在一行,多个键值对使用空格隔开
LABEL maintainer="wangtingyun@email.com" version="1.0"

# 使用换行符
LABEL maintainer="wangtingyun@email.com" \
      version="1.0"

注意: 如果新添加的 LABEL 和已有的 LABEL 同名,则新值会覆盖掉旧值。


ENV

功能: 设置或定义环境变量,定义的环境变量可以在后续的指令中通过 $ 进行使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值