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 ... \Welcome to nginx!\ ---------------------------------------------------------------------------------------------------- tomcat 的dockerfile FROM rockylinux:8.8 LABEL maintainer="pod" 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" 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

相关推荐
我的xiaodoujiao11 分钟前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 38--Allure 测试报告
python·学习·测试工具·pytest
好奇龙猫6 小时前
【AI学习-comfyUI学习-第三十节-第三十一节-FLUX-SD放大工作流+FLUX图生图工作流-各个部分学习】
人工智能·学习
Boilermaker19926 小时前
[Java 并发编程] Synchronized 锁升级
java·开发语言
saoys6 小时前
Opencv 学习笔记:图像掩膜操作(精准提取指定区域像素)
笔记·opencv·学习
Cherry的跨界思维7 小时前
28、AI测试环境搭建与全栈工具实战:从本地到云平台的完整指南
java·人工智能·vue3·ai测试·ai全栈·测试全栈·ai测试全栈
alonewolf_997 小时前
JDK17新特性全面解析:从语法革新到模块化革命
java·开发语言·jvm·jdk
一嘴一个橘子7 小时前
spring-aop 的 基础使用(啥是增强类、切点、切面)- 2
java
sheji34167 小时前
【开题答辩全过程】以 中医药文化科普系统为例,包含答辩的问题和答案
java
电子小白1238 小时前
第13期PCB layout工程师初级培训-1-EDA软件的通用设置
笔记·嵌入式硬件·学习·pcb·layout
恋爱绝缘体18 小时前
2020重学C++重构你的C++知识体系
java·开发语言·c++·算法·junit