把docker搭建好了也能被外部访问了,但是一直都没搞明白dockerfile到底是什么?

dockerfile到底是什么呢?我一直都没有遇到一个类似于编辑文件的东西呀?
搜索了一下也没结果,特此请教下

阅读 6.5k
6 个回答

这么说吧:
目标: 你需要一个指定时区的tomcat 镜像。

  • 方法一: pull tomcat镜像, run运行, exec 进去 修改时区。 但这样在其它机器或要一个新的容器时还要做一次。

  • 方法二: 把上面的操作写成docker file , 运行时需要docker build 和 run 就行了, 其它机器只需要把dcoker file 复制过去,一样两句命令就起来了。

实际中一个官方的镜像要修改的东西有很多。 并不止一两项。 docker file 就简化了很多工作。
而且传输也快很多。 而且结全docker-compose 和git 会更简单。 包换以后加上自动化

Dockerfile是用于定义Docker镜像生成流程的配置文件,是为了快速、方便且清晰的在网络中分享镜像而诞生的。在Docker中,我们只需要传递Dockerfile到其他的机器,就能在目标机器上构建相同的镜像,不在需要像以往那样传递庞大的镜像文件了。

题主问这个问题可能是因为没有用过 Dockerfile,所以上面的回答虽然给出了定义,但是未必对题主有帮助。

你可以这么理解 Dockerfile:
就比如有人发烧了,需要去医院开药。医院有两个方法把药给病人:
(1)门诊的医生问过病人的症状后,先自己配好【退烧药】,然后打包好交给病人;
(2)医生写个退烧的【药方】给药房,然后药房配好【退烧药】快递送到病人家中。
这里的【退烧药】相当于某个特定的【镜像】,【药方】相当于 Dockerfile。

如果病人只是发烧,那么医生直接给退烧药是最方便的。
但如果病人还有其他症状比如流鼻涕,发烧,咳嗽,头痛,那医生是不是要事先屯一大堆不同的药?病人还得从医院把一堆药搬回家。

作为医生的你,发现病人除了发烧,还流鼻涕,咳嗽,头痛,可以这么做:

  1. 先撕出一张药方纸 root@yourhost:~# touch Dockerfile

  2. 编辑 Dockerfile,在里面写上你的处方:

FROM Ubuntu:latest    #这是你的药引
MAINTAINER Dr. Somebody    #你开的药
RUN apt-get update && \ 
  apt-get install -y 退烧药 止鼻水 止咳丸 止痛药
CMD ["所有药", "饭后服"]
  1. 药房帮你配药 root@yourhost:~# Docker build -t 速效感冒灵 .

  2. 然后你就有了一个镜像叫 速效感冒灵,病人既可以来你这里搬药,也可以只带走处方自己配药。

  3. 刚好你的基友也是医生,他觉得你的感冒药开的好,但是他不需要 “止咳丸”。那么他只要照抄你的处方,在里面删掉“止咳丸”,就可以去配药啦。

Docker官网是这样定义dockerfile的:

A Dockerfile is a text document that contains all the commands a user could call on the command line to assemble an image

这里有几个关键:

  • 是什么:Dockerfile是一个文本文档

  • 目的:组装成需要的镜像

  • 方式:通过一些定义好的命令

这样就比较好理解了,实质就是一个使用一些定义好的命令,描述并组装成需要的镜像的文本文件。

dockerfile可以复用,就是你创建docker的时候写的那些命令,然后它可以做更多的工作

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题