当前位置: 首页 > news >正文

docker 学习dockerfile 构建 Nginx 镜像-部署 nginx 静态网

docker 运行nginx镜像

docker run -d -p 80:80 nginx

命令

ss -antpul |grep nginx

查看容器信息 docker inspect 容器id

容器和宿主机通过vth管道进行数据交互 docker 默认是桥接模式

导出镜像 docker save -o rockylinux8.8.tar.gz rockylinux:8.8

导出镜像 名字是rockylinux8.8.tar.gz  镜像是rockylinux:8.8

导入镜像 docker load -i rockylinux8.8.tar.gz

dockerfile构建nginx服务镜像

FROM rockylinux:8.8
LABEL maintainer="pod<pod@example.com>"
RUN sed -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' -i.bak /etc/yum.repos.d/*.repo
RUN yum -y install gcc make pcre-devel zlib-devel tar zlib
ADD nginx-1.15.2.tar.gz /usr/src/
RUN cd /usr/src/nginx-1.15.2 \&& mkdir /usr/local/nginx \&& ./configure --prefix=/usr/local/nginx && make && make install \&& ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ \&& nginx
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf
COPY run.sh /run.sh
RUN chmod 755 /run.sh
EXPOSE 80
CMD ["/run.sh"]

备注:
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf 说明:
"daemon off;" 是一个 Nginx 配置文件参数。在 Nginx 配置中,daemon off; 的作用是告诉
Nginx 不要以后台守护进程模式运行,而以前台模式运行。这与之前提到的 -g daemon off; 类似,都
是为了让 Nginx 在容器中以前台模式运行,以便在终端中查看日志和进行调试。

创建启动脚本
[root@xuegod63 nginx1]# vim run.sh

#!/bin/bash
/usr/local/nginx/sbin/nginx

#基于 dockerfile 文件构建镜像
[root@xuegod63 nginx1]# docker build -t xuegod/nginx:v2 .
#查看构建的镜像
[root@xuegod63 nginx]# docker images | grep nginx
xuegod/nginx v2 0556622907d9 13 seconds ago 370MB
#基于镜像启动容器
[root@xuegod63 nginx1]# docker run -d -p 30380:80 --name nginx xuegod/nginx:v2
[root@xuegod63 nginx1]# curl 192.168.1.63:30380

<h1>Welcome to nginx!</h1>

----------------------------------------------------------------------------------------------------

tomcat 的dockerfile

FROM rockylinux:8.8
LABEL maintainer="pod<pod@example.com>"
RUN sed -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' -i.bak /etc/yum.repos.d/*.repo
COPY jdk-8u45-linux-x64.rpm /usr/local/
ADD apache-tomcat-8.0.26.tar.gz /usr/local/
RUN cd /usr/local && yum install jdk-8u45-linux-x64.rpm -y
RUN mv /usr/local/apache-tomcat-8.0.26 /usr/local/tomcat8
EXPOSE 8080
ENTRYPOINT /usr/local/tomcat8/bin/startup.sh && tail -F /usr/local/tomcat8/logs/catalina.out

备注: ENTRYPOINT /usr/local/tomcat8/bin/startup.sh && tail -F

/usr/local/tomcat8/logs/catalina.out 指令说明:这个指令将在容器启动时运行 Tomcat 服务器的startup.sh 脚本,并使用 tail 命令来实时跟踪并输出 Tomcat 服务器的日志文件 catalina.out 的内容。如果在 Dockerfile 中没有指定类似于 tail -F /usr/local/tomcat8/logs/catalina.out 的命令,那么容器会在启动 Tomcat 服务器之后立即退出。这是因为 Docker 容器在没有任何活动进程的情况下会自动停止。

apache的docker

FROM rockylinux:8.8
LABEL maintainer="pod<pod@example.com>"
RUN sed -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' -i.bak /etc/yum.repos.d/*.repo
RUN yum -y install httpd
COPY template /var/www/html/
COPY run.sh /run.sh
RUN chmod 755 /run.sh
EXPOSE 80
ENTRYPOINT ["/run.sh"]

创建启动脚本
[root@xuegod63 apache]# vim run.sh 
#!/bin/bash
rm -rf /run/httpd/*
exec /usr/sbin/apachectl -D FOREGROUND #启动容器时启动服务
备注:exec /usr/sbin/apachectl -D FOREGROUND 参数说明:
这是一个启动 Apache Web 服务器的命令,其中 /usr/sbin/apachectl 是 Apache Web 服务
器的启动脚本,-D FOREGROUND 是一个参数,用于指定服务器在前台运行。更具体地说,-D FOREGROUND 参数告诉 Apache Web 服务器在启动后在前台运行。
1、exec: exec 的作用是将 /usr/sbin/apachectl -D FOREGROUND 命令替换为当前进程,并使 Apache Web 服务器成为 Docker 容器中唯一运行的进程。
2、/usr/sbin/apachectl:表示要执行的命令,即 apachectl 工具的路径。
3、-D FOREGROUND:表示让 Apache HTTP 服务器在前台运行,并将日志输出到标准输出中,这样可以方便地查看服务器的日志信息,以及在容器内部进行调试和监控。

#基于刚才的 dockerfile 构建镜像
[root@xuegod63 apache]# docker build -t xuegod/apache:v1 .
#启动 apache 服务
[root@xuegod63 apache]# docker run --name apache -d -p 30280:80 
xuegod/apache:v1
#验证容器是否启动成功
[root@xuegod63 apache]# docker ps

http://www.dtcms.com/a/494649.html

相关文章:

  • Prompt Engineering 核心知识:从基础模式到思维链,掌握大模型高效交互秘籍
  • Android中加载unity aar包实现方案
  • auxiliary英文单词学习
  • Elasticsearch:创建一个定制的 DeepSeek 嵌入推理端点
  • “自然搞懂”深度学习系列(基于Pytorch架构)——01初入茅庐
  • 51c~Pytorch~合集6
  • Java 对接印度股票数据源实现 http+ws实时数据
  • 建设网站分析报告陕西四通建设工程有限责任公司网站
  • 微信网站建设app公司WordPress邮箱注册慢
  • 【Qt】元对象系统:从实际开发中看QML/C++交互原理
  • 【MySQL】从零开始了解数据库开发 --- 数据表的索引
  • 设计模式篇之 策略模式 Strategy
  • 【HarmonyOS】并发线程间的通信
  • 2三、buildroot
  • 开源 C++ QT QML 开发(二十二)多媒体--ffmpeg编码和录像
  • 详细分析平衡树--红黑树(万字长文/图文详解)
  • 国产开源代码管理工具 GitPuk 安装+入门全流程解析
  • wordpress本地视频教程免费网站seo优化
  • 前端布局入门:flex、grid 及其他常用布局
  • Excel中将毫秒时间戳转换为标准时间格式
  • 传奇网站模板免费下载建立网站需要多少钱费用
  • 第2讲:Go内存管理机制深度解析
  • 【解决】mayfly-go 容器启动失败 —— failed to connect to mysql!
  • 基于STM32低功耗授时系统的硬件电路设计-上
  • 嵌入式软件架构--多窗口显示1(后台软件实现)
  • 牛商网网站建设企业网站开发建设
  • 软件供应链安全的革命:深度解析链图·SBOM管理服务平台的技术突破
  • QChart控件:图例QLegend
  • 【活动预告】2025斗拱开发者大会,共探支付与AI未来
  • 开源Filestash 搭建“多合一”文件管理器