Dockerfile详解

Dockerfile分为四部分:基础镜像信息、维护者信息、镜像操作指令、容器启动时执行指令。

1.基础镜像信息:FROM ubutu

格式为FROM或FROM: ,Dockerfile第一条必须为FROM指令,如果一个Dockerfile要指定多个镜像,则每个镜像使用一个FROM指令

2.维护者信息:MAINTAINER xiaolu xiaolu@qq.com

格式为MAINTAINER,指定维护者信息,可省略

3.镜像操作指令:RUN apt-get update && apt-get install -y vim

格式为RUN或RUN ["executable", "Param1", "Param2"]

格式RUN:在shell终端运行,即/bin/sh -C

格式RUN ["executable", "Param1", "Param2"]:使用exec执行

每条run指令在当前基础镜像执行,并且重新提交新镜像,当命令比较长时可用"/"换行

4.容器启动时执行指令:CMD /usr/sbin/nginx

每个容器只能执行一条CMD命令,多个CMD命令时,只会执行最后一条。

支持三种格式:

CMD ["executable", "Param1", "Param2"]:使用exec执行,推荐

CMD command param1 param2:使用/bin/sh上执行

CMD ["Param1", "Param2"]:提供给ENTRYPOINT做默认参数

5.暴露端口指令:EXPOSE,例如:EXPOSE 80 22 8080

格式为:EXPOSE port1 port2 port3

告诉Docker服务端容器暴露的端口号,供互联系统使用。

在启动Docker时,主机会自动分配一个端口号转发到指定的端口,可用通过-P/-p,指定主机具体端口号进行映射。

6.设置环境变量ENV

格式为ENV,指定一个环境变量,会被后续的RUN指令使用,并且会在容器运行过程中保持。

ENV YC_NAME yc_framework

ENV YC_VERSION 1.0

RUN wget -C http://www.kevinlu.cc/$YC_NAME/$YC_VERSION | mvn install /usr/src/$YC_NAME-$YC_VERSION

ENV PATH /usr/src/$YC_NAME-$YC_VERSION/bin:$PATH

7.复制指定的文件到容器中ADD

ADD hom* /usr/file

若/usr/file目录不存在,则自动创建

源目录可以是Dockerfile所在目录的一个相对路径;也可以是一个URL;也可以是一个tar文件(自动解压为目录)

8.复制本地主机的文件到容器COPY

格式:COPY file directory

拷贝的文件为Dockerfile所在目录的相对路径

9.容器启动后执行指令:ENTRYPOINT

格式:ENTRYPOINT ["executable", "Param1", "Param2"]

ENTRYPOINT command param1 param2

配置容器启动后需要执行的指令,并且不会被docker run提供的参数覆盖

每个Dockerfile中只能有一个ENTRYPOINT,如果有多个,则只会执行最后一个

10.指定工作目录WORKDIR

格式:WORKDIR /a/b/c

为后续的RUN、CMD、ENTRYPOINT指令配置工作目录

可以使用多个WORKDIR指令,后续的命令的参数为相对路径时,会基于之前命令指定的目录

例如:

WORKDIR /a

WORKDIR b

WORKDIR c

WORKDIR d

RUN pwd<打印出/a/b/c/d>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值