构建nginx镜像,部署到k8s实现方式

 更新时间:2026年06月17日 09:31:45   作者:hongkid  
这段ginx Docker镜file构建与Kubernetes部署,融合Nginx配置与镜像推送流程,简化Nginx服务部署与管理

创建dockerfile(Dockerfile-web),通过dockerfile构建nginx镜像

FROM nginx:stable-alpine
COPY nginx.conf /etc/nginx/nginx.conf
ADD dist.tar.gz /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

dockerfile是一个描述如何构造和启动镜像的文件,像上面这个

  • 1.我们从 nginx:stable-alpine 拉取镜像作为基座,nginx版本是,1.22.1;
  • 2.拷贝当前目录下的nginx.conf 到 镜像里面的/etc/nginx/nginx.conf,其实就是替换,nginx的配置
  • 3.把当前目录下的dist.tar.gz的压缩文件,解压到镜像的/usr/share/nginx/html/
  • ps: 压缩命令:cd 到dist目录执行 tar -zcvf dist.tar.gz ./ 
  • 4.声明该镜像服务跟外界通讯的端口是80
  • 5.启动程序在后台执行

下面的操作都是在安装有docker的服务器运行

执行命令构建镜像

docker build -t myNginx:v1 . -f ./Dockerfile-web

查看镜像 

docker images

使用镜像myNginx:v1创建容器myNginxV1实例,并映射宿主85端口到容器的80端口

docker run -d -p 85:80 --name myNginxV1 myNginx:v1               ## 使用新镜像创建容器 

启动容器

docker start myNginxV1

查看容器状态

docker ps

停止容器

docker stop myNginxV1

删除容器

docker rm myNginxV1

进入容器

docker exec -it myNginxV1  /bin/sh

ps:进入容器要看容器的基座是基于什么方式进行交互,有的是/bin/bash有的是/bin/sh

退出容器

请按Ctrl+P+Q进行退出容器

部署到k8s

1.如果有部署自己公共的镜像服务器管理平台,如Harbor,则将上述创建好的镜像文件push到管理平台,执行

docker tag myNginx:v1 xxx.xxx.xxx.xxx/myNginx:v1
docker push xxx.xxx.xxx.xxx/myNginx:v1

2.编写yaml文件(myNginx.yaml)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myNginx
  labels:
    name: myNginx
spec:
  replicas: 3 # 启动3个容器实例
  selector:
    matchLabels:
      app: myNginx
  template:
    metadata:
      labels:
        app: myNginx
    spec:
      containers:
        - name: moanginx
          image: xxx.xxx.xxx.xxx/myNginx:v1
          imagePullPolicy: Always # 始终拉取
          ports:
            - containerPort: 80 # 容器对外端口
---
apiVersion: v1
kind: Service
metadata:
  name: myNginx
  labels:
    app: myNginx
spec:
  type: NodePort
  ports:
    - port: 80 # 容器端口
      targetPort: 80 # 容器端口
      nodePort: 30005 # 对外服务端口
  selector:
    app: myNginx

这个yaml文件是告诉k8s如何部署镜像,服务。

ps:yaml的语法,跟json差不多,少了{},层级靠空格区分(空格个数不限制,相同空格数的在同一级),“-”表示父元素是个数组,这是一个数组项;“---”表示另外要一个yaml文件,不想分多个文件想在一个文件里面描述的就使用---隔开

上面yaml定义2个类型的Deployment,Service的对象,Deployment简单理解管理容器的一套程序,配置这个类型,告诉k8s,容器从哪里拉镜像,启动多少容器实例等等;Service简单理解容器运行后从集群角度对外怎样提供服务,通过配置对外服务是30005端口,外部的程序就可以通过30005端口进入集群访问容器提供的服务,负载均衡啥的应该就都是Service内部自己调度

下面的命令需要在部署了k8s的服务器上运行

执行部署命令

kubectl apply -f myNginx.yaml 

执行后,如果没有什么问题,通过 kubectl get pods 可以看到3个myNginx的实例在运行,再通过http://xxx.xxx.xxx.xxx:30005,在浏览器就可以访问容器内nginx提供的web内容

停掉这个部署可以使用下面命令

kubectl delete -f myNginx.yaml

执行后,再用kubectl get pods,可以看到myNginx会逐步停掉至消失

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • nginx运行报错:unknown directive “stream“的解决方案

    nginx运行报错:unknown directive “stream“的解决方案

    这篇文章主要给大家介绍了nginx 运行报错:unknown directive "stream"的原因,主要是因为没有安装stream模块导致的,我们只需要编译安装一下stream模块即可解决这个问题,文中有详细的解决方案,需要的朋友可以参考下
    2023-09-09
  • 详解Nginx服务器的配置中开启文件Gzip压缩的方法

    详解Nginx服务器的配置中开启文件Gzip压缩的方法

    这篇文章主要介绍了Nginx服务器的配置中开启文件Gzip压缩的方法,可以对CSS和JavaScript以及各种图片等web传输的文件进行压缩,需要的朋友可以参考下
    2016-01-01
  • 基于Nginx搭建WebDAV服务的详细过程

    基于Nginx搭建WebDAV服务的详细过程

    在搭建 Joplin 笔记服务的时候,发现了可以通过 WebDAV 服务来实现云笔记的功能,所以本篇就来介绍一下,怎么快速搭建 WebDAV 服务,需要的朋友可以参考下
    2022-12-12
  • 强大的 Web 应⽤服务器OpenResty安装(Nginx仓库)

    强大的 Web 应⽤服务器OpenResty安装(Nginx仓库)

    OpenResty 是⼀个强大的 Web 应⽤服务器,Web 开发⼈员可以使用 Lua 脚本语⾔调动 Nginx ⽀持的各种 C 以及 Lua 模块,更主要的是在性能方面,OpenResty可以快速构造出足以胜任 10K 以上并发连接响应的超高性能 Web 应用系统
    2023-06-06
  • Nginx 配置 WebSocket 代理的操作过程

    Nginx 配置 WebSocket 代理的操作过程

    这篇文章主要介绍了Nginx 配置 WebSocket 代理的操作过程,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-04-04
  • nginx访问报403错误的几种情况详解

    nginx访问报403错误的几种情况详解

    最近访问新安装的nginx,发现报403错误,所以这篇文章主要给大家介绍了关于nginx访问报403错误的几种情况,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • OpenResty是什么,OpenResty和Nginx的区别?

    OpenResty是什么,OpenResty和Nginx的区别?

    Nginx作为一款轻量级、高性能的Web服务器,传统局限性也很明显:静态配置、逻辑扩展依赖C模块开发,使得它在需要动态业务逻辑的场景中显得捉襟见肘,<BR>而OpenResty的出现,打破了这一僵局,它通过将Lua脚本深度集成到Nginx中,将“静态代理服务器”升级为“动态应用平台”
    2025-04-04
  • Nginx实现精准IP访问控制的方法全攻略

    Nginx实现精准IP访问控制的方法全攻略

    在日常服务器运维、前后端联调、测试环境部署中,精准控制访问权限是高频且核心的需求,Nginx 作为当下最流行的 Web 服务器和反向代理工具,本文将从基础用法入手,结合实际测试场景,拆解 Nginx IP 访问控制的核心指令、实用技巧、常见坑点,需要的朋友可以参考下
    2026-03-03
  • 通过nginx代理拦截请求进行全局访问限制

    通过nginx代理拦截请求进行全局访问限制

    这篇文章主要介绍了通过nginx代理拦截请求进行全局访问限制,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Kubernetes之安装nginx-controller作为统一网关方式

    Kubernetes之安装nginx-controller作为统一网关方式

    这篇文章主要介绍了Kubernetes之安装nginx-controller作为统一网关方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07

最新评论