dockerfile保留字

dockerfile详细讲解

什么是dockerfile
  • DockerFile是什么?
    Dockerfile是用来构建docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本.
  • 构建三步骤:
    编写dockerfile文件
    docker build命令构建镜像
    docker run运行容器实例
  • dockerFile内容基础知识
    每一条保留字指令必须大写字母且最好跟随参数
    指令按照从上到下执行
    "#"表示注释
    每一条指令都会创建一个新的镜像层并对镜像进行提交
  • docker执行dockerfile的大致流程
    Docker从基础镜像运行一个容器
    执行一条指令并对容器作出修改
    执行类似commit命令的操作提交一个新的镜像层
    Docker再基于刚提交的镜像运行一个新容器
    执行dockerfile中的下一条指令直到所有指令执行完成
dockerfile的常用保留字
  • FROM :基础镜像,当前镜像是基于哪个镜像,指定一个已经存在的镜像作为模板,第一条必须是from
	# FROM 镜像名
	FROM centos
  • MAINTAINER:镜像维护者的姓名和邮箱地址
	MAINTAINER DSW<2291809498@qq.com>
  • RUN:容器构建时需要运行的命令,- 两种格式:shell格式,exec格式,RUN是在docker build时运行
	# 第一种shell格式
		RUN <命令行的命令>
		# <命令行的命令>等同于在终端操作的shell命令
			RUN yum -y install vim
	# 第二种exec格式
		RUN ["可执行文件","参数一","参数二"]
			RUN ["yum","install","-y","vim"]
  • EXPOSE:当前容器对外暴露的端口
	# EXPOSE 端口号
	EXPOSE 80
  • WORKDIR:指定在创建容器后,终端默认登录的进来工作目录,一个落脚点
	WORKDIR /usr/local
  • USER:指定该镜像以什么样的用户去执行,如果都不指定,默认是root
	# USER <user>[:<group>]
	# USER <UID>[:<GID>]
	USER ding
	USER 1000:1000
  • ENV:用来在构建镜像过程中设置环境变量
	ENV MYPATH /usr/local
  • ADD:将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包
	ADD jdk-8u.....tar.gz /usr/local/java/
  • COPY:类似ADD,拷贝文件和目录到镜像中,将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>
	#第一种
	COPY src dest
	#复制单个文件
	COPY app.sh /usr/local/app.sh
	# 复制文件并且重命名
	COPY app.sh /usr/local/dsw.sh

	#第二种
	COPY ["src","dest"]
  • VOLUME:容器数据卷,用于数据保存和持久化工作
	# VOLUME ["<路径1>","<路径2>","<路径3>"...]
	VOLUME ["/data"]
	# VOLUME <路径>
	VOLUME /data
  • CMD:指定容器启动后要干的事情,dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后参数替换,CMD是在docker run 时运行,RUN是在docker build时运行
	CMD指令的格式
		shell格式:CMD <命令>
			CMD nginx -g daemon off;
		exec格式:CMD ["可执行文件","参数1","参数2"]
			CMD ["nginx","-g","daemon off;"]
		参数列表格式:在指定ENTRYPOINT指令后,用CMD指定具体的参数
			ENTRYPOINT ["echo"]
			CMD ["Hello,World!"]
  • ENTRYPOINT:用在指定一个容器启动时要运行的命令,类似于CDM指令,但是ENTRYPOINT不会被docker run后面的命令覆盖,而且这些命令行参数会被当作参数送给ENTRYPOINT指令指定的程序
	两种格式:
		exec格式:
			ENTRYPOINT ["<executeable>","<param1>","<param2>",...]
			ENTRYPOINT ["nginx","-g","daemon off;"]
		shell格式
			ENTRYPOINT nginx -g daemon off;
	
	ENTRYPOINT可以和CMD一起用,一般是变参才会使用CMD,这里的CMD等于是在给ENTRYPOINT传参
	ENTRYPOINT ["nginx","-c"]   # 定参
	CMD ["/etc/nginx/nginx.conf"]  # 变参
	当启动命令为:
		docker run nginx 
	衍生出来的实际命令是:
		nginx -c /etc/nginx/nginx.conf
		
	当启动命令为:
		docker run nginx -c /etc/nginx/new.conf
	衍生出来的实际命令是:
		nginx -c /etc/nginx/new.conf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值