当前位置: 首页 > 知识库问答 >
问题:

如何将Windows docker容器部署到docker-for-desktop Kubernetes集群?请求访问被拒绝

江承嗣
2023-03-14

无法拉取映像“iis-site”:rpc错误:code=未知desc=后台进程的错误响应:对iis-site的拉取访问被拒绝,存储库不存在或可能需要“Docker登录”

我构建了一个docker映像,如下所示:

FROM microsoft/iis

RUN powershell -NoProfile -Command Remove-Item -Recurse C:\inetpub\wwwroot\*

WORKDIR /inetpub/wwwroot

COPY content/ .

我有这样的目录结构:

D:\TEMP\IIS
│   Dockerfile
│
└───content
        index.html
<html>
    <body>
    Hello World!
    </body>
</html>
docker build -t iis-site .

但现在我想看到它在kubernetes(本地集群)中运行。

我有

kubectl apply -f D:\Temp\windows-deployment.yaml

D:\temp\windows-deployment.yaml

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: iis-deployment
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: iis
    spec:
      containers:
      - name: iis
        image: iis-site
        ports:
        - containerPort: 80
NAME                                  READY     STATUS             RESTARTS   AGE
iis-deployment-5768b4fb85-pfxjk       0/1       ImagePullBackOff   0          18m
sql-deployment-659d64d464-rss5c       1/1       Running            18         40d
streact-deployment-567cf9db9b-g5vkb   1/1       Running            18         39d
web-deployment-669595758-7zcdx        1/1       Running            45         39d
kubectl describe pod iis-deployment-5768b4fb85-pfxjk
kubectl describe node docker-for-desktop

Name:               docker-for-desktop
Roles:              master
Labels:             beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/os=linux
                    kubernetes.io/hostname=docker-for-desktop
                    node-role.kubernetes.io/master=
Annotations:        node.alpha.kubernetes.io/ttl=0
                    volumes.kubernetes.io/controller-managed-attach-detach=true
CreationTimestamp:  Fri, 11 Jan 2019 10:14:26 +0000
Taints:             <none>
Unschedulable:      false
Conditions:
  Type             Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message
  ----             ------  -----------------                 ------------------                ------                       -------
  OutOfDisk        False   Wed, 20 Feb 2019 16:32:37 +0000   Wed, 20 Feb 2019 10:06:38 +0000   KubeletHasSufficientDisk     kubelet has sufficient disk space available
  MemoryPressure   False   Wed, 20 Feb 2019 16:32:37 +0000   Wed, 20 Feb 2019 10:06:38 +0000   KubeletHasSufficientMemory   kubelet has sufficient memory available
  DiskPressure     False   Wed, 20 Feb 2019 16:32:37 +0000   Wed, 20 Feb 2019 10:06:38 +0000   KubeletHasNoDiskPressure     kubelet has no disk pressure
  PIDPressure      False   Wed, 20 Feb 2019 16:32:37 +0000   Fri, 11 Jan 2019 10:14:13 +0000   KubeletHasSufficientPID      kubelet has sufficient PID available
  Ready            True    Wed, 20 Feb 2019 16:32:37 +0000   Wed, 20 Feb 2019 10:06:38 +0000   KubeletReady                 kubelet is posting ready status
Addresses:
  InternalIP:  192.168.65.3
  Hostname:    docker-for-desktop
Capacity:
 cpu:                2
 ephemeral-storage:  61664044Ki
 hugepages-2Mi:      0
 memory:             2540888Ki
 pods:               110
Allocatable:
 cpu:                2
 ephemeral-storage:  56829582857
 hugepages-2Mi:      0
 memory:             2438488Ki
 pods:               110
System Info:
 Machine ID:                 
 System UUID:                8776A14E-A225-4134-838E-B50A6ECAB276
 Boot ID:                    5a836f34-51a4-4adf-a32d-218a5df09b3c
 Kernel Version:             4.9.125-linuxkit
 OS Image:                   Docker for Windows
 Operating System:           linux
 Architecture:               amd64
 Container Runtime Version:  docker://18.9.2
 Kubelet Version:            v1.10.11
 Kube-Proxy Version:         v1.10.11
ExternalID:                  docker-for-desktop
Non-terminated Pods:         (12 in total)
  Namespace                  Name                                          CPU Requests  CPU Limits  Memory Requests  Memory Limits
  ---------                  ----                                          ------------  ----------  ---------------  -------------
  default                    iis-deployment-5768b4fb85-pfxjk               0 (0%)        0 (0%)      0 (0%)           0 (0%)
  default                    sql-deployment-659d64d464-rss5c               0 (0%)        0 (0%)      0 (0%)           0 (0%)
  default                    streact-deployment-567cf9db9b-g5vkb           0 (0%)        0 (0%)      0 (0%)           0 (0%)
  default                    web-deployment-669595758-7zcdx                0 (0%)        0 (0%)      0 (0%)           0 (0%)
  docker                     compose-74649b4db6-rm9zc                      0 (0%)        0 (0%)      0 (0%)           0 (0%)
  docker                     compose-api-fb7b8f78f-drllk                   0 (0%)        0 (0%)      0 (0%)           0 (0%)
  kube-system                etcd-docker-for-desktop                       0 (0%)        0 (0%)      0 (0%)           0 (0%)
  kube-system                kube-apiserver-docker-for-desktop             250m (12%)    0 (0%)      0 (0%)           0 (0%)
  kube-system                kube-controller-manager-docker-for-desktop    200m (10%)    0 (0%)      0 (0%)           0 (0%)
  kube-system                kube-dns-86f4d74b45-h2p5q                     260m (13%)    0 (0%)      110Mi (4%)       170Mi (7%)
  kube-system                kube-proxy-p8vj7                              0 (0%)        0 (0%)      0 (0%)           0 (0%)
  kube-system                kube-scheduler-docker-for-desktop             100m (5%)     0 (0%)      0 (0%)           0 (0%)
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  CPU Requests  CPU Limits  Memory Requests  Memory Limits
  ------------  ----------  ---------------  -------------
  810m (40%)    0 (0%)      110Mi (4%)       170Mi (7%)
Events:         <none>
 Operating System:           linux

因此,即使docker引擎运行的是Windows容器,本地的Kubernetes集群(控制平面)运行的是Linux。

我将非常感谢任何关于如何修复上述错误的想法,即拉访问被拒绝,以便我可以在Windows 10上运行一个带有Windows容器的本地Kubernetes集群。

共有1个答案

唐烨煜
2023-03-14

您看到的错误与它是否可以运行Windows容器无关,而是因为它无法拉出映像。看起来不像是您将图像推送到docker集线器。构建后,需要运行:

docker tag -t <yourdockerhubuser>/iis iis
docker push <yourdockerhubuser>/iis

您需要将docker集线器凭据设置为部署上的ImagePullSecrets。然后在您的K8s部署上:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: iis-deployment
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: iis
    spec:
      containers:
      - name: <yourdockerhubuser>/iis
        image: iis-site
        ports:
        - containerPort: 80
     imagePullSecrets:
     - name: <your-docker-hub-user-secret>

好的,这个容器不会运行,因为您的节点上有Linux,所以您需要有一个Windows节点,为此,您需要在Windows机器上设置kubelet。(我相信Docker for Windows不支持Windows kubelet,只支持运行在VM中的Linux kubelet)。

 类似资料:
  • 我按照这个链接创建我的第一个docker映像,它成功了,现在我正试图从这个链接将这个映像推送到我的docker存储库中。但每当我试图将此图像推入存储库时,就会出现这种类型的错误。 有人能给我一些关于这个问题的提示吗?任何帮助都将不胜感激。 注意:我已成功登录docker

  • 问题 是否有一种方法可以将本地计算机上的docker容器部署到CloudFoundry?如果没有,那么有什么方法可以安全地将容器寄存到CF的某个地方来获取它们呢? CloudFoundry是否能够运行作为Python烧瓶应用程序的docker容器?

  • 问题内容: 我有一个运行Nginx的容器:; 并通过以下方式获取了其端口信息: 然后,我可以从容器中获取响应(ID:c30991a04b2f): =>返回默认页面内容,它可以正常工作 但是,当我在容器的外部制作时,得到了以下信息: 我在docker版本1.9.0的Mac上运行;Nginx最新 有谁知道是什么原因造成的?有什么帮助吗?谢谢 问题答案: 如果在OSX上,则可能是在docker环境中使用

  • 我试图使用gitlab ci将我的图像推送到docker repositoy存储库,但收到错误: 拒绝:请求的资源访问被拒绝错误:作业失败:退出代码1 我的gitlab ci。yml 他建立了正确的形象,但当去推动 我将$repository的存储库名称更改为“仅在此处粘贴”。 我已经给了正确的权限上hub.docker.com为用户已经使docker登录,有一个colborator上的存储库。

  • 我尝试部署我创建的本地容器映像之一,但总是得到以下错误 无法拉出映像“webrole1:dev”:rpc错误:code=未知desc=守护进程的错误响应:对webrole1的拉出访问被拒绝,存储库不存在或可能需要“docker登录”:被拒绝:请求访问 我已经按照下面的文章来容器我的应用程序,我能够成功地完成这一点,但当我试图将它部署到k8s pod时,我没有成功 下面是我的PowerShell中的

  • 问题内容: 我对Google Cloud平台和Docker相当陌生,并设置了一个节点集群,制作了一个Dockerfile,该文件可复制存储库并在公共端口上运行Clojure REPL。我可以从IDE连接到它,然后播放我的代码,太棒了! 但是该REPL应该应该通过SSH进行隧道传输,但这是我的问题开始的地方。 我找不到合适的SSH位置来 更改Docker在其上运行REPL的存储库: 公开的IP仅公开