首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >本地kubernetes从本地映像运行docker拉取失败

本地kubernetes从本地映像运行docker拉取失败
EN

Stack Overflow用户
提问于 2021-10-12 15:24:10
回答 2查看 128关注 0票数 0

我的故事是:

1,我创建了一个spring-boot项目,里面有一个Dockerfile。2,我用上面的docker文件在本地成功地创建了docker镜像。3,我有一个minikube为我的本地用户构建了一个K8s。4,但是,当我尝试应用k8s.yaml时,它告诉我没有这样的docker图像。显然,我在公共docker hub中搜索docker应用程序,那么我能做什么?

下面是我的dockerfile

代码语言:javascript
复制
FROM openjdk:17-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
expose 8080
ENTRYPOINT ["java","-jar","/app.jar"]

下面是我的k8s.yaml

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: pkslow-springboot-deployment
spec:
  selector:
    matchLabels:
      app: springboot
  replicas: 2
  template:
    metadata:
      labels:
        app: springboot
    spec:
      containers:
        - name: springboot
          image: cicdstudy/apptodocker:latest
          ports:
            - containerPort: 8080

---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: springboot
  name: pkslow-springboot-service
spec:
  ports:
    - port: 8080
      name: springboot-service
      protocol: TCP
      targetPort: 8080
      nodePort: 30080
  selector:
    app: springboot
  type: NodePort
EN

回答 2

Stack Overflow用户

发布于 2021-10-13 14:43:12

如果你只是想使用minikube从你的本地计算机上拉取图像,你可以使用eval $(minikube docker-env),这会导致在你的minikube集群上使用所有与docker相关的命令来使用你的本地docker守护进程。因此,pull将首先在主机本地映像中查找,而不是在hub.docker.io中查找。

欲获知更多信息,请访问here

票数 1
EN

Stack Overflow用户

发布于 2021-10-12 21:53:12

在Kubernetes中,不存在集中式内置容器镜像注册表。根据您拥有的K8S集群节点中的容器运行时,它可能会搜索第一个dockerhub来拉取图像。由于Dockerhub目前不建议免费拉取,也不太允许免费拉取,建议您先创建一个账号用于开发。您将获得1个私有存储库和unlimited public repository,这意味着无论您推送到公共存储库的内容,那里的任何人都可以访问它。如果您不太关心知识产权问题,您可以继续使用该免费帐户进行开发。但在投入生产时,您需要使用服务/机器人帐户更改该帐户。

在DockerHub https://id.docker.com/login/上创建

  1. 帐户

  1. 在构建容器镜像的计算机上本地登录到您的DockerHub帐户

docker登录--用户名=您的用户名--email=youremail@company.com

  1. 再次构建、重新标记和推送您的映像(转到Dockerfile所在的文件夹)

yourhubusername/mysuperimage:v1

  • docker docker yourhubusername/mysuperimage:v1

  1. Create
    • -t mysuperimage:v1
    • docker tag mysuperimage:v1 push yourhubusername/mysuperimage:v1
    1. Create a secret for image registry credentials

kubectl create secret docker-registry regcred --docker-server=https://index.docker.io/v1/ --docker-username= --docker-password= --docker-email=

  1. 为deployment

创建服务帐户

kubectl创建serviceaccount您的超级用户

为名为"yoursupersa"的服务帐户附加

  1. 密码

kubectl patch serviceaccount yoursupersa -p '{"imagePullSecrets":{"name":“docker--p”}}‘

  1. 现在将您的应用程序创建为K8S

中的部署资源对象

kubectl创建部署mysuperapp --image=yourhubusername/mysuperimage:v1 --port=8080

然后,使用附加了注册表凭据的服务帐户修补您的部署。(这将导致re-deployment)

'{"spec":{"template":{"spec":{"serviceAccountName":"yoursupersa"}}}}‘补丁部署mysuperapp -p kubectl

  1. 最后一步是公开您的服务

kubectl expose deployment/mysuperapp

那么一切都很棒!:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69543150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档