DockerFile的基本知识及利用DockerFile构建镜像

1、概念

DockerFile是用来构建Docker镜像的构建文件,是一段命令脚本

2、基础知识 

(1)每个保留关键字都必须是大写字母

(2)执行顺序从上往下

(3)#表示注释

(4)每一个指令都会创建提交一个新的镜像层并提交

3、DockerFile指令

FROM       #基础镜像
MAINTAINER #维护者信息(姓名+邮箱)
RUN        #镜像构建的时候需要运行的命令
ADD        #拷贝文件,会自动解压
WORKDIR    #设置镜像的工作目录
VOLUME     #设置卷,挂载主机目录
EXPOSE     #对外暴露的端口
CMD        #指定这个容器启动的时候要运行的命令(CMD一行只执行一个命令,可以写多个CMD)
ENTRYPOINT #指定这个容器启动的时候要运行的命令(可以追加命令)
ONBUILD    #ONBUILD是一个特殊的指令它后面跟的是其它指令,比如 RUN, COPY 等,而这些指令,在当前镜像构建时并不会被执行。只有当以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行
COPY       #类似ADD,将我们的文件拷贝到镜像里
ENV        #构建的时候设置环境变量

4、使用DockerFile构建一个CentOS镜像

(1)新建一个名为mydockerfile的DockerFile

vim mydockerfile

(2)配置mydockerfile文件的脚本命令

#基础镜像
FROM centos:7

#维护者信息(姓名+邮箱)
MAINTAINER ken<邮箱地址>

#设置环境变量,环境变量名为MYPATH的路径为/usr/local,在关键字ENV后通过一个名字对应一个路径来创建环境变量
ENV MYPATH /usr/local

#设置镜像的工作目录
WORKDIR $MYPATH

#镜像构建的时候需要运行的命令(因为基础的centos镜像没用vim命令,但希望自己构建的centos镜像能使用vim命令,所以在RUN后写需要运行的命令)
RUN yum -y install vim

#对外暴露的端口
EXPOSE 80

#指定这个容器启动的时候要运行的命令(CMD一行只执行一个命令,可以写多个CMD)
CMD echo $MYPATH
CMD echo "---end---"
CMD /bin/bash

(3)通过mydockerfile文件构建Docker镜像

#选项及解释
-f表示DockerFile文件的所在路径
-t的t是tag,表示生成的镜像的名称和版本号
.表示当前构建时上下文的路径为当前目录

docker build -f mydockerfile -t mycentos:0.1 .

(4)最后查看构建结果

(5)查看镜像

(6)启动镜像

(7)查看当前目录,发现启动镜像后直接进入了我们在mydockerfile文件里用WORKDIR指令设置的工作目录而不再是根目录

基础的centos镜像:

配置了工作目录的mycentos镜像:

(8)测试我们在用RUN指令下载的vim命令是否能用

基础的centos镜像:

以centos镜像为基础,下载了vim命令的mycentos镜像:

(9)通过以下命令查看镜像的历史构建记录

docker history 镜像id或镜像名称

例: 

其他:

1、CMDENTRYPOINT的区别

CMD

(1)新建一个名为mydockerfile-test-cmd的DockerFile,内容如下

FROM centos:7
CMD ["ls","-a"]

(2)通过mydockerfile-test-cmd文件构建Docker镜像

(3) 启动mycentos-test-cmd镜像

(4)往mycentos-test-cmd镜像追加其他命令(在docker run命令行中输入命令会覆盖掉原来的CMD命令)

 

错误的追加命令方式:

ENTRYPOINT

 (1)新建一个名为mydockerfile-test-entrypoint的DockerFile,内容如下

FROM centos:7
ENTRYPOINT ["ls","-a"]

 

(2)通过mydockerfile-test-entrypoint文件构建Docker镜

(3) 启动mycentos-test-entrypoint镜像

(4)往mycentos-test-entrypoint镜像追加其他命令(在docker run命令行中输入命令不容易被覆盖掉原来的ENTRYPOINT命令,且能在原有的ls -a命令后为ENTRYPOINT命令追加参数)

 

创作不易,如果这篇文章对你有帮助,希望能点个赞帮助文章的推广,如果文章有错漏,希望各位能批评指正,谢谢大家。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值