Dockerfile语法解释与过程

DockerFile指令语法与生成过程

一、构建步骤

1、编写一个dockerfile文件
2、docker build 构建一个镜像
3、docker run 运行镜像
4、docker push 发布镜像(Docker Hub、阿里云镜像仓库)

二、Dockerfile构建过程

1、每个保留关键字(指令)必须是大写字母
2、执行从上到下顺序执行
3、#表示注释
4、每一个指令都会创建提交一个新的镜像层,并提交

在这里插入图片描述

三、DockerFile指令

FROM                       #基础镜像,一切从这里开始
MAINTAINER                 #镜像作者姓名、邮箱
RUN                        #镜像构建时需要运行的命令
ADD                        #步骤,tomcat镜像,这个tomcat压缩包,添加内容
WORKDIR                    #镜像工作的目录
VOLUME                     #挂载卷的目录
EXPOST                     #暴露端口位置
CMD                        #指定这个容器启动时要运行的命令,只有最后一个命令会生效,可被替代
ENTRYPOINT                 #指定这个容器启动时要运行的命令,可以追加命令
ONBUILD                    #当构建一个被继承 Dockerfile 这个时候就会运行  ONBUILD 的指令,触发指令
COPY                       #类似ADD,将我们文件拷贝到镜像中
ENV                        #构建时设置环境变量

在这里插入图片描述

四、测试

Docker Hub 中99%镜像都是从这个基础镜像过来的 FROM scratch ,然后配置需要的软件和配置来进行构建
在这里插入图片描述

五、创建mycentos

#1、编写dockerfile文件
[root@172-0-0-2 dockerfile]# cat mycentos01 
FROM centos

MIAINTAINER why<138027256@qq.com>

ENV MYPATH /usr/local

WORKDIR $MYPATH

RUN yum install -y vim

RUN yum install net-tools

EXPOSE 22 

CMD echo $MYPATH

CMD echo "---end---

CMD /bin/bash

#2、docker build -f dockerfile -t name:1.0
命令:docker build f dockerfile文件路径 -t 镜像名:[tag]

#3、测试运行

六、CMD和ENTRYPOINT区别

CMD           #指定这个容器启动时要运行的命令,只有最后一个命令生效,可被替代
ENTRYPOINT    #指定这个容器启动时要运行的命令,可以追加命令

测试CMD

编写 dockerfile 文件
[root@172-0-0-2 ~]# vim dockerfile-cmd-test
FROM  centos
CMD [“ls”,“-a”]

#构建镜像
[root@172-0-0-2 ~]# docker build -f dockerfile-cmd-tes -t cmdtest .

#run运行,发现我们的 ls -a 生效
#想追加一个命令 -l ls -al
#cmd的清理下 -l 替换了CMD [“ls”,["-a"] 命令,-l 不是命令提示报错

测试ENTRYPOINT

#编写 dockerfile 文件
[root@172-0-0-2 ~]# vim dockerfile-cmd-entrypoint
FROM  centos
ENTRYPOINT  [“ls”,“-a”]
#追加的命令,是直接拼接在ENTRYPOINT命令的后面
[root@172-0-0-2 ~]# docker run centos -l

了解他们的区别,最好的学习方式就是对比他们,然后测试

七、查看镜像生成方式

[root@172-0-0-2 ~]# docker history --help 

Usage:  docker history [OPTIONS] IMAGE

Show the history of an image    #显示镜像变动历史

Options:
      --format string   Pretty-print images using a Go template
  -H, --human           Print sizes and dates in human readable format (default true)
      --no-trunc        Don't truncate output
  -q, --quiet           Only show numeric IDs
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值