dockerfile到底是什么呢?我一直都没有遇到一个类似于编辑文件的东西呀?
搜索了一下也没结果,特此请教下
dockerfile到底是什么呢?我一直都没有遇到一个类似于编辑文件的东西呀?
搜索了一下也没结果,特此请教下
Dockerfile是用于定义Docker镜像生成流程的配置文件,是为了快速、方便且清晰的在网络中分享镜像而诞生的。在Docker中,我们只需要传递Dockerfile到其他的机器,就能在目标机器上构建相同的镜像,不在需要像以往那样传递庞大的镜像文件了。
题主问这个问题可能是因为没有用过 Dockerfile,所以上面的回答虽然给出了定义,但是未必对题主有帮助。
你可以这么理解 Dockerfile:
就比如有人发烧了,需要去医院开药。医院有两个方法把药给病人:
(1)门诊的医生问过病人的症状后,先自己配好【退烧药】,然后打包好交给病人;
(2)医生写个退烧的【药方】给药房,然后药房配好【退烧药】快递送到病人家中。
这里的【退烧药】相当于某个特定的【镜像】,【药方】相当于 Dockerfile。
如果病人只是发烧,那么医生直接给退烧药是最方便的。
但如果病人还有其他症状比如流鼻涕,发烧,咳嗽,头痛,那医生是不是要事先屯一大堆不同的药?病人还得从医院把一堆药搬回家。
作为医生的你,发现病人除了发烧,还流鼻涕,咳嗽,头痛,可以这么做:
先撕出一张药方纸 root@yourhost:~# touch Dockerfile
编辑 Dockerfile,在里面写上你的处方:
FROM Ubuntu:latest #这是你的药引
MAINTAINER Dr. Somebody #你开的药
RUN apt-get update && \
apt-get install -y 退烧药 止鼻水 止咳丸 止痛药
CMD ["所有药", "饭后服"]
药房帮你配药 root@yourhost:~# Docker build -t 速效感冒灵 .
然后你就有了一个镜像叫 速效感冒灵,病人既可以来你这里搬药,也可以只带走处方自己配药。
刚好你的基友也是医生,他觉得你的感冒药开的好,但是他不需要 “止咳丸”。那么他只要照抄你的处方,在里面删掉“止咳丸”,就可以去配药啦。
补充下, 本质上其实就是用于构建和描述Docker镜像生成的批处理文件, 优点见 @有明 的答案
更详细的建议阅读官网文档
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是一个文本文档
目的:组装成需要的镜像
方式:通过一些定义好的命令
这样就比较好理解了,实质就是一个使用一些定义好的命令,描述并组装成需要的镜像的文本文件。
15 回答8.4k 阅读
7 回答5.3k 阅读
8 回答6.2k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
3 回答3.9k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
这么说吧:
目标: 你需要一个指定时区的tomcat 镜像。
方法一: pull tomcat镜像, run运行, exec 进去 修改时区。 但这样在其它机器或要一个新的容器时还要做一次。
方法二: 把上面的操作写成docker file , 运行时需要docker build 和 run 就行了, 其它机器只需要把dcoker file 复制过去,一样两句命令就起来了。
实际中一个官方的镜像要修改的东西有很多。 并不止一两项。 docker file 就简化了很多工作。
而且传输也快很多。 而且结全docker-compose 和git 会更简单。 包换以后加上自动化