You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kubernetes中将指定版本Nginx镜像同步至本地/私有仓库(生产安全视角)

如何留存指定版本Nginx镜像并在Kubernetes中稳定使用

没问题,咱们一步步来搞定这个事儿——既要把指定版本的Nginx镜像牢牢存下来,还要确保Kubernetes能稳稳用上,就算官方仓库下架也不怕。

一、先把指定版本镜像拉到本地

首先用Docker命令拉取你需要的x.x版本镜像,执行:

docker pull nginx:x.x

拉取完成后,用下面的命令确认镜像已经在本地:

docker images | grep nginx

你应该能看到nginx:x.x的条目,说明本地已经有备份了。

二、推送到私有仓库(生产环境必备)

本地镜像只能在单台机器用,生产环境的Kubernetes集群有多个节点,必须把镜像放到私有仓库才能共享。步骤如下:

  1. 给镜像打私有仓库标签
    格式是私有仓库地址/镜像名:版本,比如你的私有仓库地址是my-registry.com,就执行:
    docker tag nginx:x.x my-registry.com/nginx:x.x
    
    这个标签是告诉Docker要把镜像推到哪个私有仓库位置。
  2. 登录私有仓库
    执行登录命令,输入你的私有仓库用户名和密码:
    docker login my-registry.com
    
  3. 推送镜像到私有仓库
    执行推送命令:
    docker push my-registry.com/nginx:x.x
    
    推送完成后,你可以登录私有仓库的管理界面(比如Harbor、Docker Registry的web页面)确认镜像已经存在。

三、在Kubernetes中使用私有仓库的镜像

接下来配置Kubernetes使用这个私有镜像,分两种情况:

情况1:私有仓库不需要认证(不推荐生产环境用)

直接在Deployment的YAML文件里指定私有仓库的镜像地址就行,比如:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: my-registry.com/nginx:x.x
        ports:
        - containerPort: 80

情况2:私有仓库需要认证(生产环境标准配置)

生产环境的私有仓库一般都需要认证,这时候要先创建存储拉取凭证的Secret:

  1. 创建镜像拉取Secret
    执行下面的命令,替换成你的私有仓库信息:
    kubectl create secret docker-registry regcred \
      --docker-server=my-registry.com \
      --docker-username=your-username \
      --docker-password=your-password \
      --docker-email=your-email@example.com
    
  2. 在Deployment中引用这个Secret
    修改Deployment的YAML,添加imagePullSecrets字段,让Kubernetes拉取镜像时使用这个凭证:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: my-registry.com/nginx:x.x
            ports:
            - containerPort: 80
          imagePullSecrets:
          - name: regcred
    

额外注意点

  • 如果只是本地开发测试用Kubernetes(比如kind、minikube),可以不用推私有仓库,直接把本地镜像导入到集群节点里(比如kind load docker-image nginx:x.x),但生产环境一定要用私有仓库。
  • 定期检查私有仓库里的镜像是否存在,最好设置镜像保留策略,防止误删除。
  • 如果你的私有仓库是自签名证书,还要给Kubernetes节点配置信任该证书,不然会拉取失败。

内容的提问来源于stack exchange,提问作者Anil Kumar P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:15:13