使用Dockerfile编写源码安装Nginx镜像_nginx dockerfile

RUN useradd -M -s /sbin/nologin nginx
WORKDIR /usr/local/src/KaTeX parse error: Expected 'EOF', got '&' at position 562: …_status_module &̲& make && make …PATH
EXPOSE 80/tcp
ENTRYPOINT [“nginx”]
CMD [“-g”,“daemon off;”]


构建镜像



docker build -t centos7:nginx .


运行容器



docker run -d --name nginx -p 8080:80 centos7:nginx


访问即可



http://IP:8080


#### 二,详细介绍使用的模块



#基准镜像
FROM centos:7
#作者信息
LABEL version=“nginx v1”
LABEL “emill”=“243254384@qq.com”
#调整系统时间差
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#工作目录
WORKDIR /usr/local/src/
#定义环境变量
ENV NG_VERSION nginx-1.21.0
#安装epel仓库
RUN yum -y install epel-release
#安装wget
RUN yum -y install wget
#下载nginx文件并解压
RUN wget http://nginx.org/download/$NG_VERSION.tar.gz && tar xzvf KaTeX parse error: Expected 'EOF', got '#' at position 20: …ERSION.tar.gz #̲安装编译依赖包 RUN yum…NG_VERSION
#编译安装nginx
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install
#复制测试页面到容器中
ADD index.html /usr/local/nginx/html
#设置容器中要挂在到宿主机的目录
VOLUME /usr/local/nginx/html
#设置sbin环境变量
ENV PATH /usr/local/nginx/sbin:$PATH
#暴露80端口
EXPOSE 80/tcp
ENTRYPOINT [“nginx”]
CMD [“-g”,“daemon off;”]
#当ENTRYPOINT和CMD连用时,CMD的命令是ENTRYPOINT命令的参数,两者连用相当于nginx -g "daemon off;"而当一起连用的时候命令格式最好一致(这里选择的都是json格式的是成功的,如果都是sh模式可以试一下)


##### 1.FROM


功能为指定基础镜像,并且必须是第一条指令。 如果不以任何镜像为基础,那么写法为:FROM scratch。 同 时意味着接下来所写的指令将作为镜像的第一层开始


##### 2.RUN


功能为运行指定的命令


注意:多行命令不要写多个RUN,原因是Dockerfile中每一个指令都会建立一层. 多少个RUN就构建了多 少层镜像,会造成镜像的臃肿、多层,不仅仅增加了构件部署的时间,还容易出错。 RUN书写时的换行 符是\


##### 3.CMD


功能为容器启动时要运行的命令


注意:补充细节:这里边包括参数的一定要用双引号,就是",不能是单引号。千万不能写成单引号。 原因是参数传递后,docker解析的是一个JSON array


##### 4.RUN和CMD的区别


不要把RUN和CMD搞混了。 RUN是构件容器时就运行的命令以及提交运行结果 CMD是容器启动时执行的命 令,在构件时并不运行,构件时紧紧指定了这个命令到底是个什么样子


##### 5.LABEL


功能是为镜像指定标签,为镜像写一些注释信息


但是并不建议这样写,最好就写成一行,如太长需要换行的话则使用\符号 如下:


注意:LABEL会继承基础镜像种的LABEL,如遇到key相同,则值覆盖


##### 6.EXPOSE


功能为暴漏容器运行时的监听端口给外部 但是EXPOSE并不会vim 使容器访问主机的端口 如果想使得容器与主 机的端口有映射关系,必须在容器启动的时候加上 -P参数


注意:如果在端口号后面加/tcp,默认为tcp协议,如果需要UDP端口需要添加/udp


##### 7.ENV


功能为设置环境变量


##### 8.ADD


一个复制命令,把文件复制到镜象中。 如果把虚拟机与容器想象成两台linux服务器的话,那么这个命令就类似 于scp,只是scp需要加用户名和密码的权限验证,而ADD不用。


注意:尽量不要把写成一个文件夹,如果是一个文件夹了,复制整个目录的内容,包括文件系统元数据


##### 9.WORKDIR



### 最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

### 资料预览

给大家整理的视频资料:

![](https://img-blog.csdnimg.cn/img_convert/97b52b2aa7da20b706a6f5d659edec68.png)

给大家整理的电子书资料:

  

![](https://img-blog.csdnimg.cn/img_convert/77d7f852f10c4848f7c178a99bd6d738.png)



**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**
给大家整理的视频资料:

[外链图片转存中...(img-b8vwpvyf-1718917536882)]

给大家整理的电子书资料:

  

[外链图片转存中...(img-RqfqHn6q-1718917536883)]



**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**
  • 22
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值