面试官:你说你精通 Docker,那你来详细说说 Dockerfile 吧

本文深入探讨Dockerfile,解释其作用、基本命令和实战应用。通过示例,展示了如何使用Dockerfile自动化部署应用到Tomcat和构建Redis镜像,阐述了WORKDIR、ADD、COPY、ENV、RUN、CMD和ENTRYPOINT等关键指令,并解释了镜像分层的概念。Dockerfile简化了手动操作,确保了环境一致性,是实现持续集成和部署的重要工具。
摘要由CSDN通过智能技术生成

面试官:你说你精通 Docker,那你来详细说说 Dockerfile 吧

一、 带着问题学Dockerfile

1、疑问

我们都知道从远程仓库可以pull一个tomcat等镜像下来,然后docker run启动容器,然后docker exec -it 容器id /bin/bash进入容器,往webapps下仍我们的程序。等等这一系列操作,都需要人工一步步的去操作,那我问你:你没qa和生产环境的部署权限,你咋操作这些?这就需要将所有人工一步步操作的地方都写到Dockerfile文件里,然后将文件给到运维人员,他们build成镜像然后进行启动。

2、举例

比如:你要用tomcat部署一个war包,这时候你的Dockerfile文件内容会包含如下:

将tomcat从远程仓库拉下来

进入到tomcat的webapps目录

将宿主机上的war包扔到容器的webapps目录下

然后运维拿着这个Dockerfile进行build成image,在run一下启动容器。大功告成

3、好处

上面的例子好处不难发现

Dockerfile解放了手工操作很多步骤

Dockerfile保证了环境的统一

再也不会出现:QA是正常的,线上就是不行的情况了(前提是由于环境问题导致的 ),因为Dockerfile是同一份,大到环境,小到版本全都一致。再有问题那也是代码问题,节省了和运维人员大量“亲密接触”的时间。

二、什么是Dockerfile

知道Dockerfile是干嘛的了,那Dockerfile的定义到底是啥呢?

Dockerfile中文名叫镜像描述文件,是一个包含用于组合镜像目录的文本文档,也可以叫“脚本”。他通过读取Dockerfile中的指令安装步骤自动生成镜像。

补充:文件名称必须是:Dockerfile

三、Dockerfile命令

1、构建镜像命令
docker build -t 机构/镜像名称<:tags> Dockerfile目录

比如如下,最后一个.代表当前目录,因为我的Dockerfile文件就在这,也可以用绝对路径

docker build -t chentongwei.com/mywebapp:1.0.0 .

然后执行docker images 进行查看会发现有我们刚才构建的镜像

docker images

面试官:你说你精通 Docker,那你来详细说说 Dockerfile 吧

2、基础命令

2.1、FROM

制作基准镜像

FROM 镜像

比如我们要发布一个应用到tomcat里,那么的第一步就是FROM tomcat

FROM tomcat<:tags>

先有个印象,下面会实战操作。

2.2、LABEL&MAINTAINER

MAINTAINER,一般写个人id或组织id

LABEL 就是注释,方便阅读的,纯注释说明。不会对Dockerfile造成任何影响

比如:

MAINTAINER baidu.com
LABEL version = “1.0.0”
LABEL description = “我们是大百度!”

…等等描述性信息,纯注释。

2.3、WORKDIR

类似于Linux中的cd命令,但是他比cd高级的地方在于,我先cd,发现没有这个目录,我就自动创建出来,然后在cd进去

WORKDIR /usr/local/testdir

这个路径建议使用绝对路径。

2.4、ADD&COPY

2.4.1、COPY

将1.txt拷贝到根目录下。它不仅仅能拷贝单个文件,还支持Go语言风格的通配符,比如如下:

COPY 1.txt /

拷贝所有 abc 开头的文件到testdir目录下

COPY abc* /testdir/

? 是单个字符的占位符,比如匹配文件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值