什么是dockerfile?简单的说就是一个文本格式的脚本文件,其内包含了一条条的指令(Instruction),每一条指令负责描述镜像的当前层(Layer)如何构建。 下面通过一个具体的例子来学习dockerfile的写法。 新建一个dbuild文件夹,创建一个自定义的Nginx首页,逻辑很简单,显示一个自定义的图片文件train.jpg. 我想基于标准的Nginx镜像做一些修改,让Nginx支持SSL。SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。 为此我首先需要创建一个针对SSL的配置文件。
使用如下命令创建nginx.key和nginx.crt文件:
一切就绪之后,下面就应该创建dockerfile了:
所有dockerfile第一行指令必定是FROM XXXX。 FROM的作用是指定基准镜像。该dockerfile以FROM后面指定的镜像为基础,在其上进行定制。 在 Docker Store 上有很多高质量的官方镜像,主要分为以下三大类:
当然您如果不愿意基于这些官方已有镜像开始镜像构建,而是想从头开始,这也是可以的。Docker存在一个特殊的镜像,名为 scratch 。它是一个虚拟的概念, 表示一个空白的镜像。 直接使用FROM scratch 会让镜像体积更加小巧。 接下来的一系列copy指令都很好理解。 dockerfile开发完毕之后,执行命令:
意思是基于当前目录开始构建镜像,注意末尾的.必不可少,代表“当前目录”。 通过docker build执行输出的日志可以观察到里面每一行的指令被逐行执行: 最后一行日志提示标签为jerry-nginx:1.0的景象被成功构建。 用下面的命令基于刚刚制作好的镜像运行一个容器:
基于http协议访问没有问题: 基于https访问也能正常工作: 要获取更多Jerry的原创文章,请关注公众号"汪子熙 |
|
来自: 汪子熙 > 《Kubernetes》