php - 把docker搭建好了也能被外部访问了,但是一直都没搞明白dockerfile到底是什么?
高洛峰
高洛峰 2017-04-11 09:43:56
[PHP讨论组]

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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(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. 刚好你的基友也是医生,他觉得你的感冒药开的好,但是他不需要 “止咳丸”。那么他只要照抄你的处方,在里面删掉“止咳丸”,就可以去配药啦。

PHPz

补充下, 本质上其实就是用于构建和描述Docker镜像生成的批处理文件, 优点见 @有明 的答案

更详细的建议阅读官网文档

https://docs.docker.com/engin...

PHPz

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是一个文本文档

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

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

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

PHPz

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号