Docker系列之Dockerfile解读

本文详细介绍了Dockerfile的结构、关键指令如FROM、RUN、ENV等的用法,帮助读者理解如何利用Dockerfile创建和定制镜像。FROM指令至关重要,MAINTAINER提供了维护者信息,RUN用于执行构建过程,而ENTRYPOINT定义了容器启动时的行为。
摘要由CSDN通过智能技术生成

1. 基础

1.1 概念:
Dockerfile是一个包含用于组合镜像命令的文本文档,Docker通过读取Dockerfile中指令自动生成镜像。

1.2 基本结构

* 基础镜像信息
* 维护者信息
* 镜像操作指令
* 容器启动时执行的命令

1.3 说明

* Docker以从上到下的顺序执行Dockerfile指令
* 为了指定基本镜像,第一条指令必须为FROM
* 一个声明以#开头,被视为注释
* 可以使用RUN、CMD、FROM、EXPOSE、ENV、EXTRYPOINT等指令

2. 指令

2.1 FROM

描述:
	指定基础镜像,后序的指令都依赖于该指令指定的image,必须为第一个指令。
格式:
	FROM <image>
	FROM <image>:<tag>
示例:	
	FROM mysql:8.0
注意:
	* tag是可选的,如果不加该参数会使用latest版本的基础镜像
	* 基础镜像里包含一些基础环境,例如:jdk、skywalking等

2.2 MAINTAINER

描述:
	维护者信息
格式:
	MAINTINER <name>
示例:
	MAINTINER gxn

2.3 RUN

描述:
	构建镜像时执行的命令
shell执行:
	格式:
		RUN <command>
	示例:
		RUN mkdir -p /wy/youzanyun

2.4 WORKDIR

描述:
	进入工作目录,类似于cd命令
格式:
	WORKDIR /path
示例:
	WORKDIR /wy/youzanyun

2.4 EXPOSE

描述:
	指定与外界交互的端口
格式:
    EXPOSE <port> [<port>...]
示例:
    EXPOSE 80
    EXPOSE 80 443
注意:
    EXPOSE并不会让容器的端口访问到主机,要访问的话需要在docker run运行
    容器时通过-p来发布这些端口

2.5 ADD

描述:
	将本地文件添加到容器中,tar类型的文件会自动解压,可以访问网络资源,类似  		 
	wget。
格式:
    ADD <src>... <dest>
示例:
    ADD ./target/youzanyun.jar ./app.jar

2.6 COPY

描述:
	功能类似于ADD,但是不会自动解压文件,不能访问网络。

2.7 ENV

描述:
	设置环境变量
格式:
	ENV <key> <value> 
    # 设置一个变量,key之后所有的内容均被视为value的组成部分
    ENV <key>=<value>... 
    # 可以设置多个变量
示例:
    ENV SPRING_PROFILES_ACTIVE=dev APP_NAME=wy_youzanyun

2.8 ENTRYPOINT

描述:

格式:
   ENTRYPOINT command param1 param2
示例:
   ENTRYPOINT java -Dspring.profiles.active=dev -jar app.jar
注意:
   * docker run 执行命令的时候不会覆盖ENTRYPOINT,而Docker run命令
     中指定的任何参数,都会被当成参数再次传递给ENTRYPOINT。
   * Dockerfile只允许有一个ENTRYPOINT命令,多指定时会覆盖前面的设置,
     而只执行最后的ENTRYPOINT指令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值