提问者:小点点

在kubernetes上运行本地制作的容器


在本地Kubernetes集群上,如何在Kubernetes部署清单中使用本地构建映像,而不将其上载到Docker注册表(如Docker Hub)?


共2个答案

匿名用户

除了一些非常有限的面向开发人员的设置(如Minikube或Kind),在Kubernetes上运行应用程序基本上需要某种形式的Docker注册表。

将Docker映像加载到系统上的唯一两种方法是运行注册表,或者加载它。docker load路径涉及将一个(可能较大的)图像tar文件传输到集群中的每个节点,并在那里运行load命令。更新应用程序映像时,必须重复此步骤;您通常希望避免使用最新的图像标记和类似的固定字符串,以便Kubernetes部署机制能够正确地更新内容,因此您必须对每个版本重复此操作,集群中的任何内容都可能仍在使用。设置存储图像的位置、将图像复制到集群中的每个节点、到处运行docker load等等的机制实际上并不比自己运行docker registry server简单。

匿名用户

你已经有了一台prem机器。您所需要做的只是从dockerfile执行docker构建,执行合适的docker标记并创建清单。

Kubernetes不会直接从注册表中提取。它首先在本地存储器上搜索图像,然后在docker注册表中搜索图像。

>

  • 拉最新的nginx图像

    docker pull nginx

    docker标签nginx:最新测试:test8970

    kind: Deployment
    metadata:
      labels:
        run: test
      name: test
    spec:
      replicas: 1
      selector:
        matchLabels:
          run: test
      template:
        metadata:
          creationTimestamp: null
          labels:
            run: test
        spec:
          containers:
          - image: test:test8070
            name: test
            imagePullPolicy: Never