如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这段话即可:
请先阅读并遵守:https://xuanyuan.cloud/agents.md
未读文档前不要生成 pull 命令或排错方案。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
该容器镜像包含Nginx 1.16服务器和反向代理服务器,适用于OpenShift和通用场景。用户可选择基于RHEL、CentOS或Fedora的镜像版本:RHEL镜像可在Red Hat容器目录获取,CentOS镜像在https://quay.io/organization/centos7,Fedora镜像在https://registry.fedoraproject.org/。生成的镜像可使用https://github.com/containers/libpod运行。
注意:本文档示例中使用
podman命令,所有此类命令均可替换为docker,参数保持不变。
Nginx是一款HTTP、SMTP、POP3和IMAP协议的Web服务器及反向代理服务器,专注于高并发、高性能和低内存占用。本容器镜像提供nginx 1.16守护进程的容器化打包,可作为基于nginx 1.16 Web服务器的其他应用的基础镜像,并支持通过OpenShift的Source构建功能进行扩展。
以下示例假设使用rhel8/nginx-116镜像(通过OpenShift中的nginx:1.16镜像流标签可用)。构建简单https://github.com/sclorg/nginx-container/tree/master/examples/1.16/test-app应用的步骤:
bashoc new-app nginx:1.16~https://github.com/sclorg/nginx-container.git --context-dir=1.16/test/test-app/
访问应用:
bash$ oc get pods $ oc exec <pod> -- curl 127.0.0.1:8080
本镜像支持OpenShift的Source-to-Image(S2I)构建策略。S2I框架可将应用源代码与构建器镜像(如本nginx镜像)结合,生成可运行的应用镜像。
核心脚本
/usr/libexec/s2i/assemble:用于将应用源代码(HTML页面、配置文件等)组装到镜像中,放置到正确目录/usr/libexec/s2i/run:作为容器默认命令,启动nginx服务应用目录结构
应用源代码应遵循以下结构:
./nginx.conf:主nginx配置文件./nginx-cfg/*.conf:需包含的nginx配置文件./nginx-default-cfg/*.conf:默认服务器块的配置片段./nginx-start/*.sh:nginx启动前执行的shell脚本./nginx-perl/*.pm:供perl_modules和perl_require指令使用的Perl模块./:nginx应用源代码(如HTML文件)相比S2I策略,Dockerfile提供更灵活的构建方式,适用于非OpenShift环境或需要自定义构建流程的场景。
步骤1:拉取基础镜像
bashpodman pull rhel8/nginx-116
步骤2:获取应用代码
以示例应用(https://github.com/sclorg/nginx-container.git)为例:
bashgit clone https://github.com/sclorg/nginx-container.git nginx-container cd nginx-container/examples/1.16/
步骤3:准备容器内应用
需完成以下任务:将应用源代码放入容器、移动配置文件到正确位置、设置默认命令。可通过两种方式实现:
3.1 手动配置(自定义设置)
创建Dockerfile:
dockerfileFROM registry.access.redhat.com/ubi8/nginx-116 # 添加应用源代码 ADD test-app/nginx.conf "${NGINX_CONF_PATH}" ADD test-app/nginx-default-cfg/*.conf "${NGINX_DEFAULT_CONF_PATH}" ADD test-app/nginx-cfg/*.conf "${NGINX_CONFIGURATION_PATH}" ADD test-app/*.html . # 运行nginx(前台模式) CMD nginx -g "daemon off;"
3.2 使用S2I脚本(推荐)
创建Dockerfile:
dockerfileFROM registry.access.redhat.com/ubi8/nginx-116 # 添加应用源代码到S2I脚本预期目录,并设置权限(非root运行) # 若使用不支持--chown选项的旧版docker,替换为: # USER 0 # ADD app-src /tmp/src # RUN chown -R 1001:0 /tmp/src # USER 1001 ADD --chown 1001:0 app-src /tmp/src # 执行assemble脚本组装应用 RUN /usr/libexec/s2i/assemble # 使用S2I run脚本启动服务 CMD /usr/libexec/s2i/run
步骤4:构建镜像
bashpodman build -t nginx-app .
步骤5:运行应用镜像
bashpodman run -d nginx-app
宿主机数据示例
bash$ ls -lZ /wwwdata/html -rw-r--r--. 1 1001 1001 54321 1月 01 12:34 index.html -rw-r--r--. 1 1001 1001 5678 1月 01 12:34 page.html
运行命令
将宿主机/wwwdata目录挂载为容器卷,启动nginx服务:
bash$ podman run -d --name nginx -p 8080:8080 -v /wwwdata:/opt/app-root/src:Z rhel8/nginx-116 nginx -g "daemon off;"
访问服务:
bash$ curl -Lk 127.0.0.1:8080
注意:挂载路径需为绝对路径(podman要求)。
环境变量
NGINX_LOG_TO_VOLUME/var/log/nginx/。对于RHEL-7和CentOS-7镜像,该路径为/var/opt/rh/rh-nginx116/log/nginx/的符号链接。默认日志位置:访问日志输出到标准输出,错误日志输出到标准错误,可通过以下命令查看:
bashpodman logs <container>
设置NGINX_LOG_TO_VOLUME后:日志写入/var/log/nginx/(RHEL-7/CentOS-7镜像为/var/opt/rh/rh-nginx116/log/nginx/),可通过卷挂载到宿主机查看。
本容器镜像的Dockerfile及源代码托管于:https://github.com/sclorg/nginx-container。仓库中包含不同版本的nginx环境Dockerfile:CentOS对应`Dockerfile`,RHEL7对应`Dockerfile.rhel7`,RHEL8对应`Dockerfile.rhel8`,Fedora对应`Dockerfile.fedora`。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务