什么是dockerfile?简单的说就是一个文本格式的脚本文件,其内包含了一条条的指令(Instruction),每一条指令负责描述镜像的当前层(Layer)如何构建。
下面通过一个具体的例子来学习dockerfile的写法。
新建一个dbuild文件夹,创建一个自定义的Nginx首页,逻辑很简单,显示一个自定义的图片文件train.jpg.
我想基于标准的Nginx镜像做一些修改,让Nginx支持SSL。SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
为此我首先需要创建一个针对SSL的配置文件。
cat << '__EOF' > ssl.conf
server {
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)"
一切就绪之后,下面就应该创建dockerfile了:
FROM nginx:stable
# copy the custom website into the image
COPY train.jpg /usr/share/nginx/html/
COPY index.html /usr/share/nginx/html/
# copy the SSL configuration file into the image
COPY ssl.conf /etc/nginx/conf.d/ssl.conf
# download the SSL key and certificate into the image
COPY nginx.key /etc/nginx/ssl/nginx.key
COPY nginx.crt /etc/nginx/ssl/nginx.crt
# expose the https port
EXPOSE 443
所有dockerfile第一行指令必定是FROM XXXX。
FROM的作用是指定基准镜像。该dockerfile以FROM后面指定的镜像为基础,在其上进行定制。
在 Docker Store 上有很多高质量的官方镜像,主要分为以下三大类:
-
开箱即用的服务类的镜像,比如网络服务器nginx ,也有数据库服务器诸如redis 、 mongo 、mysql 等;
-
方便开发、构建、运行各种语言应用的镜像,如 node 、 openjdk 、 python 等。
-
相对前两大类更为基础的操作系统镜像,如ubuntu 、 debian 、 centos 等
当然您如果不愿意基于这些官方已有镜像开始镜像构建,而是想从头开始,这也是可以的。Docker存在一个特殊的镜像,名为 scratch 。它是一个虚拟的概念,
表示一个空白的镜像。
直接使用FROM scratch 会让镜像体积更加小巧。
接下来的一系列copy指令都很好理解。
dockerfile开发完毕之后,执行命令:
docker build -t jerry-nginx:1.0 .
意思是基于当前目录开始构建镜像,注意末尾的.必不可少,代表“当前目录”。
通过docker build执行输出的日志可以观察到里面每一行的指令被逐行执行:
最后一行日志提示标签为jerry-nginx:1.0的景象被成功构建。
用下面的命令基于刚刚制作好的镜像运行一个容器:
docker run -d -p 443:443 -p 1082:80 jerry-nginx:1.0
基于http协议访问没有问题:
基于https访问也能正常工作:
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
相关推荐
Dockerfile实战---构建SSH、Tomcat、MySQL、Nginx镜像
通过Dockerfile创建 基于Centos7.8.2003基础镜像搭建nginx-rtmp-ffmpeg流服务镜像
ingress-nginx-controller-v1.2.0_daemonset用到的镜像,免费下载
-创建dockerfile编写tomcat - 使用dockerfile使用yum安装apache - 使用dockerfile安装nginx - 使用dockerfile安装mysql
nginx镜像资源nginx镜像资源nginx镜像资源nginx镜像资源nginx镜像资源nginx镜像资源
已编译好的nginx-http-flv-molule(windows...在网上查找半天都只有教程,没有可免费下载的版本,深知没有积分遍地找资源的痛苦,无奈之下只好自己按照教程一步一个坑编译出来的,供大家免费下载使用。(无毒放心使用)
nginx-php-composer Dockerfile使用PHP,Composer以及最新版本的NGINX和PHP构建映像。 该Docker容器正在开发中。学分此图像在很大程度上受图像的影响。 它不是分支的主要原因是可能在我们的用例中引入了特定的更改。
nginx-ingress镜像
nginx-gunicorn-flask, 用于 Nginx Gunicorn Flask的Dockerfile nginx-gunicorn-flask这个库包含构建 Nginx Gunicorn Flask的Docker 图像所必需的文件。基本 Docker 映像ubuntu: 12.04安装安装 Docker 。从 D
这个使用方法去这篇博客:https://cuichongxin.blog.csdn.net/article/details/120184717
win7+VS2015编译好的带nginx-rtmp-module模块的Nginx 64位
此资源有两个文件,含 nginx-upstream-jvm-route 和 nginx 对应版本,都是tar.gz文件。 安装方法网上很多就不写了,亲测可用。 不用担心版本不匹配造成安装失败,再浪费积分去到处下载尝试的烦恼。 此资源有两个文件...
官方nginx 镜像不带主动健康,本镜像将 nginx_upstream_check健康检查 打包到了镜像中。
一个简单的 Docker 镜像,用于使用 SSL 运行 nginx。 旨在与其他应用程序和/或服务结合使用。 该存储库演示了使用 Dockerfile 创建 Docker 容器的过程,该容器然后在没有 Docker 的机器上运行(使用 systemd-n...
通过dockerfile将nginx、前端和后端封装成一个镜像文章所需要的nginx压缩包
在windows 7 64位 环境下使用nginx的nginx-http-flv-module搭建flv视频流播放所有的安装包,参考:https://blog.csdn.net/qq_33071429/article/details/102628008
OpenResty 是一个通过扩展 nginx 的快速 Web 应用服务器。 Nginx Openresty For Windows (NOW) 是带有 Openresty 的 Windows 版本中的 Nginx。 它有一些特点: 高性能 并发两万多个连接 多进程 支持共享内存 支持...
nginx sticky是nginx的module,可以实现基于cookie的负载均衡。 下载后,在编译安装nginx时,用--add-module... ./configure --prefix=/usr/local/nginx-1.6.0 --add-module=../nginx-sticky-module-1.25 --without-...
1、最新版 nginx-http-flv-module(linux可执行程序,含nginx 1.19.3,http-flv-module:1.2.7) 2、内含说明文档,请下载查看。 3、请勿放置于中文路径下,否则无法启动 4、sbin/nginx -c conf/nginx.conf
nginx-rtmp模块源码包nginx-rtmp-module-master