Dockerfile指令与写法

Dockerfile 
from <image>
from <image>[:tag] 不使用tag 默认时letst
from <@digest> 使用摘要
run
expose
workdir
env 
add
copy 


dockerfile:
FROM centos:7
RUN yum install -y vim
# RUN ["yum", "install", "-y", "vim"] 另一种方式
EXPOSE 8080 # 暴露哪个端口,用于外部访问,expose可以写多个
EXPOSE 15672 # 暴露另一个端口
# 用来为dockerfile中的任何RUN,ENTRYPOINT,COPY,ADD指令设置工作目录,如果WORKDIR不存在,即使它没有任何后续dockerfile指令中使用,它也将被创建
# WORKDIR 指令可以在dockerfile中多次使用,如果提供了相对路径,则该路径将与先前WORKDIR指令的路径相对
WORKDIR /data # 如果data这个目录在系统中不存在,则会自动创建,然后进入容器后自动进入这个目录下面
WORKDIR a # 这个a是相对路径,是相对 /data,再次进入是,会在a目录下工作
#WORKDIR b
#WORKDIR /c
# add 用来从context上下文复制新文件,目录或者远程文件URL,并将他们添加到位于指定路径的映像文件系统中,如果加载的文件是一个压缩包,会自动解压
# ADD hom* /mydir 通配符添加多个文件
# ADD hom*.txt /mydir/ 通配符添加
# ADD test.txt relationdir/ 可以指定相对路径
# ADD test.txt /absolutedir也可以指定绝对路径
# ADD url url是下载文件的地址
# ADD http://www.baidu.com /data/bb
ADD apache-tomcat-8.5.61.tar.gz /data/bb
RUN mv apache-tomcat-8.5.61.tar.gz tomcat 解压后移动到这个目录下,RUN可以写多个
# COPY 用来将context目录中指定文件复制到镜像的指定目录中,两种方式
# COPY src dest
# COPY ["<src>",...,[dest]]
# COPY aa.txt /data/bb # aa.txt和dockerfile在同一个目录下面,是一个相对路径,建议用相对路径,把aa.txt拷贝到/data/bb下面
# VOLUMNE 用来定义容器运行时可以挂在到宿主机的目录
VOLUME ["/data"]
# VOLUME /data/bb/tomcat/webapps 这两种写法都可以,代表容器中的这个路径可以被挂在出去
# ENV 用来构建设置环境变量,这个值将出现在构建阶段中所有后续指令环境中
# ENV <key> <value>
# ENV <key>=<value>
ENTRYPONIT
用来指定容器启动时执行命令和CMD类似
ENTRYPONIT指令,往往用于设置容器启动后的第一个命令,这对容器来说往往是固定的
CMD指令,往往用于设置容器启动的第一个命令的默认参数,这对一个容器来说可以是变化的
CMD中的命令可以被run中的命令覆盖
docker run mycentos7:10 ls /data/bb 会覆盖CMD的命令,但是不会覆盖ENTRYPONIT中的指令
若要覆盖ENTRYPONIT中的指令,这样可以:
docker run -- entryponit=ls mycentos7:10 /data/bb
语法:
["executable", "param1", "param2"]
ENTRYPONIT command param1 param2
两者配合使用
ENTRYPONIT ["ls", "/data"]
CMD ["/data/bb"]
docker run mycentos7:10 /data/bb/tomcat/webapps
这个命令中的/data/bb/tomcat/webapps会覆盖CMD ["/data/bb"],但是不会覆盖ENTRYPONIT ["ls", "/data"]
如果只需要看CMD ["/data/bb"]中输出的信息,不看ENTRYPONIT ["ls", "/data"]输出的信息,可以写成:
ENTRYPONIT ["ls"]
CMD ["/data/bb"]
项目中可以写成
ENTRYPONIT ["Java", "-jar"]
CMD ["xxx.jar"]
因为ENTRYPONIT ["Java", "-jar"]可以一直不变,但是xxx.jar可能会变,这时我们只需要在命令中覆盖它就行
ENTRYPONIT ["XX"] 写固定的东西
CMD ["xxx"] 用来传参,可变的


FROM centos:7
RUN ["yum", "install", "-y", "vim"] 另一种方式
EXPOSE 8080 
WORKDIR /data
WORKDIR /bb
ENV BASE_DIR /data/bb
ADD apache-tomcat-8.5.61.tar.gz $BASE_DIR
RUN mv apache-tomcat-8.5.61.tar.gz tomcat
WORKDIR /tomcat
VOLUME $BASE_DIR/tomcat/webapps
ENTRYPONIT ls $BASE_DIR/tomcat
CMD ls /data/bb/tomcat


docker build -t mycentos7:01 .
docker run -it centos7
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值