持续化部署教程(六)自定义脚本-DockerFile


今天我们讲一个相对轻松的话题 DockerFile, 也就是docker的自定义脚本。
DockerFile是由一组命令组成的自定义脚本,它可以通过预设命令,指定镜像、追加文件、分配端口等多个操作,将我们手工构建镜像的命令脚本化。
“如果一件事情是可重复、可描述的,请用系统、脚本固话下来,毕竟我们需要的是创造,而不是机械的重复 。------鲁迅 ”。
既然鲁迅先生都这么说,那么开工吧。

1.通过DockerFile构建一个镜像并运行容器

1.1 运行DockerFile脚本

首先我们创建一个文本,添加如下内容:

#20200422 castle
#执行 镜像
FROM ubuntu:18.10
#作者信息
MAINTAINER caslte "454383487@qq.com"
ADD war/info.txt /info.txt
#拷贝文件到指定目录
RUN echo "Asia/Shanghai" > /etc/timezone
ENV LANG C.UTF-8
#执行程序 
CMD ["echo","docker start"]
#开放端口
EXPOSE 80

将其保存,并在同级目录下创建war文件夹,war文件夹中创建一个txt文本,里面写入“Doing is better than saying”,效果如图。
在这里插入图片描述
运行构建镜像的语句格式为

docker build -t [镜像名称] [文件路径]

所以执行命令,通过Dockerfile构建一个名称为“my_docker_images”的镜像。

docker build -t my_docker_images /java/Docker

如图,我们就构建成功了一个镜像文件,接下来我们对DockerFile脚本中的命令进行讲解。
在这里插入图片描述

1.2 运行容器

创建一个容器,应用的镜像为[my_docker_images],并且进入该容器。

docker run --name my_docker_new  -it  my_docker_images  /bin/bash

执行 “ls”命令,可以看得到,新创建容器根据我们生成的镜像,根目录存在info.txt文件。
在这里插入图片描述

2.DockerFile命令

FOMR命令

指定了容器需要加载的镜像及其版本,每一个dockerFile脚本的开头命令一定是FORM。

MAINTAINER

标明了作者的相关信息。

ADD命令

ADD命令可以将文件追加到容器中,但是需要注意的是,它ADD的文件一定要与DockerFile文件同级目录或者其下级目录。如下图所示,ADD到容器中一个war包,那么war文件夹一定要放置到脚本文件同级目录,否则无法执行。
在这里插入图片描述

ENV命令

用来在镜像构建过程中设置环境变量,后续的RUN可以使用它所创建的环境变量。

RUN命令

在Build命构建时执行的命令。

ENTRYPOINT命令

容器启动时执行的命令,DockerFile中可以存在多个ENTRYPOINT命令,但是容器启动只执行最后一条ENTRYPOINT命令。

CMD命令

容器启动后执行的默认命令,DockerFile中可以存在多个CMD命令,但是容器启动只执行最后一条CMD命令。

EXPOSE

可以指定容器的对外端口。

3.RUN和ENTRYPOINT和CMD的区别。

从下图不难看出,RUN执行在构建镜像的时候,而ENTRYPOINT和CMD是在容器启动的时候。
在这里插入图片描述
貌似ENTRYPOINT和CMD是实现一样的功能,那他们之间的区别又是什么呢。
ENTRYPOINT,一般执行较为固定的命令。
CMD,一般是执行默认执行的命令,但是可以被参数替换。
比如,如下的命令 /bin/bash 就是一条运行是传入的参数,它会覆盖容器中默认执行的CMD命令。

docker run --name my_docker_new  -it  my_docker_images  /bin/bash   

那么docker为什么提供两条相同功能的命令呢?
我们举例说明,这是一个很简单的DockerFile脚本。按照顺序,容器启动的时候会将ENTRYPOINT和CMD命令合并,执行 ps -ef

#执行 镜像
FROM ubuntu:18.10
RUN echo "images building"
ENTRYPOINT ["ps"]
CMD ["-ef"]

分别执行如下命令,获得如下结果。

docker build -t docker_images /java/Docker
docker run --name test1  docker_images
docker run --name test2  docker_images  -aux

可以看出,如果我们执行执行容器,则执行的是ps -ef命令,如果我们传入了 -aux参数,则容器启动执行的就是ps -aux命令。 在这里插入图片描述

小结

DockerFile是docker技术中非常重要的功能,后续的章节中,我们会通过它来构建特定镜像,希望大家学习愉快。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值