构建镜像
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
功能为设置环境变量
**先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里**
**深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/5b25ceadcb16d0371a71229ac94adbdb.png)
![img](https://img-blog.csdnimg.cn/img_convert/282f5ae513052740928f06b6c00fec1c.png)
![img](https://img-blog.csdnimg.cn/img_convert/2ca43293755413329b918aa6bdc8ec2c.png)
![img](https://img-blog.csdnimg.cn/img_convert/68f7bdb0a1223e3309a2f4de0f0d147b.png)
![img](https://img-blog.csdnimg.cn/img_convert/e93ca0e0dd554b987a4614bbf071b8aa.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618542503)**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618542503)**