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

在Docker for Windows上的库伯内特斯上部署docker-comment应用程序

徐昆
2023-03-14

我正在努力按照办公室的指示去做https://docs.docker.com/docker-for-windows/kubernetes/#use-用于运行docker compose的docker命令。针对Docker for Windows上kubernetes的yml文件。

我正在使用Windows版Docker的Edge版本--18.03。0-ce-rc4——我启用了kubernetes。

我在https://docs.docker.com/compose/gettingstarted/#step-3-define-services-in-a-compose-file使用的示例docker-comple应用程序,即。

version: '3.3'
services:
  web:
    build: .
    ports:
      - '5000:5000'
  redis:
    image: redis

此示例适用于docker compose builddocker compose up

但是根据上面链接的docker stack文档,我得到了以下信息:

PS C:\dev\projects\python\kubetest> docker stack deploy --compose-file .\docker-compose.yml mystack
Ignoring unsupported options: build

Stack mystack was created
Waiting for the stack to be stable and running...
 - Service redis has one container running
PS C:\dev\projects\python\kubetest> kubectl get services
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)     AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP     5d
redis        ClusterIP   None         <none>        55555/TCP   8s

请注意,它不会创建web服务,还会出现“忽略不支持的选项:构建”错误

我还尝试使用示例docker compose。上面链接的文档中的yml文件也不起作用,出现了完全不同的错误。

简而言之,通过遵循文档,我无法在Docker for Windows上将任何内容部署到kubernetes。

共有3个答案

何章横
2023-03-14

我在遵循官方指示时遇到了同样的问题。

为了绕过这个问题,我选择使用kubectl将docker映像部署到本地k8s,而不是使用docker堆栈(似乎根本原因可能是--orchestrator kubernetes标志,它不起作用)。

以下是步骤:

>

  • 每个终端使用库伯内特斯的docker注册表(重要):

    运行

    在bash环境下运行ava$(Minikube docker-env)

    之后,运行docker image ls,确保docker注册表设置为Kubernetes的env。(您应该在“k8s.gcr.io”域下看到一些默认图像。)

    如果打开了多个终端,您可能需要在每个终端中执行此操作。

    重建docker映像:

    运行docker-compose-f /path/to/your/docker-compose.yml构建

    您的图像应显示在K8s的本地注册表中。

    使用“kubectl”运行您的图像:

    运行kubectl运行hello world--image=myimage--image pull policy=Never

    https://stackoverflow.com/a/48999680/4989702

  • 凌钊
    2023-03-14

    有一个项目:

    https://github.com/kubernetes/kompose

    称为Docker Kompal,它可以帮助已经拥有docker-composs文件的用户通过自动将他们现有的docker-composs文件转换为许多yaml文件,尽可能轻松地在库伯内特斯部署他们的应用程序。

    花永昌
    2023-03-14

    由于缺少对构建的支持,因此web服务容器将无法运行图像

    Compose可以在单个Docker主机上为您管理构建。由于Swarm和Kubernetes通常跨多个节点运行,因此映像应引用网络上可用的注册表,以便所有节点都可以访问同一映像。

    Dockersstack deploy示例包括设置私有注册表并将其用于映像源的步骤:

    services:
      web:
        image: 127.0.0.1:5000/stackdemo
    

    在本例中,可能不需要手动构建图像并引用该图像名称,因为所有内容都在一个Docker实例下运行,这取决于Kubernetes的设置方式。

    version: '3.3'
    services:
      web:
        build: .
        image: me/web
        ports:
          - '5000:5000'
      redis:
        image: redis
    

    从外部建立形象

    docker-compose build web
    

    或者直接使用docker

    docker build -t me/web .
    
     类似资料:
    • 我有一个停靠的symfony项目,我正试图在Kubernetes集群的GPC中对其进行delpoy。在开发中,我使用docker compose,我有两个用于php fpm和nginx的单独容器。 当我运行docker compose up--build时,一切都正常,但是当我尝试创建kubernetes集群时,在运行kubectl apply-f nginx之后,我遇到了这个错误。部署。亚马尔:

    • 我正在尝试在Kubernetes集群(Azure AKS)中部署Flink作业。作业群集在启动后立即中止,但任务管理器运行正常。 docker镜像创建成功,没有任何异常。我可以运行docker镜像,也可以SSHdocker镜像。 我已经按照以下链接中提到的步骤: https://github.com/apache/flink/tree/release-1.9/flink-container/kub

    • 库伯内特斯top(kubectl top)命令显示的内存使用情况与pod中运行Linuxtop命令不同。 我创建了 k8s 部署,其中 YAML 包含以下内存限制: 以下命令的输出如下所示: 运行linux top命令: 注意“free -g”还显示使用了11Gb。 问题是这与“kubectl顶部”相矛盾,后者仅显示使用了1205 mb。

    • 我有以下代码: 我创建了一个包含上述Python代码的映像的部署。 当我使用my Python代码不会创建sig文件指示,也不会打印“完成”消息。 点击此链接:https://cloud.google.com/blog/products/containers-kubernetes/kubernetes-best-practices-terminating-with-grace我看到k8s发送SIG

    • 我试图有1个redis大师与2个redis复制品绑在一个3法定人数哨兵在Kubernetes。我对Kubernetes很陌生。 我最初的计划是让主控器在一个吊舱上运行,并绑定到一个Kubernetes SVC,而两个副本在自己的吊舱上运行,并绑定到另一个Kubernetes SVC。最后,3个哨兵吊舱将被绑在他们自己的SVC上。副本将被绑定到主SVC(因为没有SVC,ip将会改变)。sentine

    • 我遵循了一些指南,我已经用谷歌容器引擎和谷歌容器注册表设置了CI。问题是我的更新没有应用到部署中。 这就是我的部署。yml包含Kubernetes服务和部署: 作为CI过程的一部分,我运行了一个脚本来更新google cloud registry中的图像,然后运行。这两项任务都成功了,我收到通知,部署和服务已更新: 由于我在图像中添加了标记,我以为每次更新部署时都会下载图像。根据文档a也应该是默认

    • 我确实部署了单吊舱,自定义docker映像如下: 在开发过程中,我希望推送新的最新版本并更新部署。如果不明确定义标记/版本并为每个构建增加它,就找不到如何做到这一点,并且