博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最简单的dockerfile使用教程 - 创建一个支持SSL的Nginx镜像
阅读量:4582 次
发布时间:2019-06-09

本文共 1915 字,大约阅读时间需要 6 分钟。

什么是dockerfile?简单的说就是一个文本格式的脚本文件,其内包含了一条条的指令(Instruction),每一条指令负责描述镜像的当前层(Layer)如何构建。

下面通过一个具体的例子来学习dockerfile的写法。

新建一个dbuild文件夹,创建一个自定义的Nginx首页,逻辑很简单,显示一个自定义的图片文件train.jpg.

1240

我想基于标准的Nginx镜像做一些修改,让Nginx支持SSL。SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。

为此我首先需要创建一个针对SSL的配置文件。

1240

cat << '__EOF' > ssl.confserver {listen       443 ssl;server_name  localhost;ssl_certificate /etc/nginx/ssl/nginx.crt;ssl_certificate_key /etc/nginx/ssl/nginx.key;location / {root   /usr/share/nginx/html;index  index.html index.htm;}}__EOF

使用如下命令创建nginx.key和nginx.crt文件:

openssl req -x509 -nodes -newkey rsa:4096 -keyout nginx.key -out nginx.crt -days 365 -subj "/CN=$(hostname)"

1240

一切就绪之后,下面就应该创建dockerfile了:

1240

FROM nginx:stable# copy the custom website into the imageCOPY train.jpg /usr/share/nginx/html/COPY index.html /usr/share/nginx/html/# copy the SSL configuration file into the imageCOPY ssl.conf /etc/nginx/conf.d/ssl.conf# download the SSL key and certificate into the imageCOPY nginx.key /etc/nginx/ssl/nginx.keyCOPY nginx.crt /etc/nginx/ssl/nginx.crt# expose the https portEXPOSE 443

所有dockerfile第一行指令必定是FROM XXXX。

FROM的作用是指定基准镜像。该dockerfile以FROM后面指定的镜像为基础,在其上进行定制。

在 Docker Store 上有很多高质量的官方镜像,主要分为以下三大类:

  1. 开箱即用的服务类的镜像,比如网络服务器nginx ,也有数据库服务器诸如redis 、 mongo 、mysql 等;

  2. 方便开发、构建、运行各种语言应用的镜像,如 node 、 openjdk 、 python 等。

  3. 相对前两大类更为基础的操作系统镜像,如ubuntu 、 debian 、 centos 等

当然您如果不愿意基于这些官方已有镜像开始镜像构建,而是想从头开始,这也是可以的。Docker存在一个特殊的镜像,名为 scratch 。它是一个虚拟的概念,

表示一个空白的镜像。

直接使用FROM scratch 会让镜像体积更加小巧。

接下来的一系列copy指令都很好理解。

dockerfile开发完毕之后,执行命令:

docker build -t jerry-nginx:1.0 .

意思是基于当前目录开始构建镜像,注意末尾的.必不可少,代表“当前目录”。

通过docker build执行输出的日志可以观察到里面每一行的指令被逐行执行:

1240

最后一行日志提示标签为jerry-nginx:1.0的景象被成功构建。

用下面的命令基于刚刚制作好的镜像运行一个容器:

docker run -d -p 443:443 -p 1082:80 jerry-nginx:1.0

基于http协议访问没有问题:

1240

基于https访问也能正常工作:

1240

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

1240

转载于:https://www.cnblogs.com/sap-jerry/p/10029823.html

你可能感兴趣的文章
IO流
查看>>
动画学习之Music图形绘制
查看>>
2019 2.15模拟赛
查看>>
扩展欧几里得
查看>>
基于H5 pushState实现无跳转页面刷新
查看>>
【Netty】第一个Netty应用
查看>>
OpenSSL中HMAC,MD5以及对称加密算法的应用
查看>>
如何在手机网站上添加百度地图(带搜索功能)
查看>>
js正则表达式应用
查看>>
web基础,用html元素制作web页面
查看>>
Ubuntu 16.04安装GIMP替代PS
查看>>
使用SmartQQ实现的智能回复(Web QQ协议)
查看>>
redis下的字符串处理
查看>>
Servlet中Cookie的用法
查看>>
开源,选择Google Code还是Sourceforge
查看>>
传感器之超声波测距HC-SR04
查看>>
浅谈Java中的hashCode方法
查看>>
自己编写类似于枚举的类型(多例模式)
查看>>
Asp: Server.mapPath() 注意事项
查看>>
关于减少BUG的思考
查看>>