docker - 在 Docker for Windows 上的 Kubernetes 上部署 docker-compose 应用程序

标签 docker kubernetes docker-compose docker-for-windows

我正在尝试按照 https://docs.docker.com/docker-for-windows/kubernetes/#use-docker-commands 中的说明进行操作用于在 Docker for Windows 上针对 kubernetes 运行 docker-compose.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-compose 应用程序,即

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。

最佳答案

由于缺少对build 的支持,因此不会有imageweb 服务容器运行。

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

Dockers stack deploy example包括一个步骤 setup a private registry并将其用作图像来源:

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 .

关于docker - 在 Docker for Windows 上的 Kubernetes 上部署 docker-compose 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49395942/

相关文章:

docker - 进程启动后如何执行docker命令

nginx - 为什么Docker https-portal的 “See It Work”部分给我一个 “port 443: Connection refused”错误?

php - 找不到 docker-compose pdo-mysql 驱动程序

postgresql - (Kubernetes) - 重启服务器时数据库为空

docker - Kubernetes和Dockerfile

kubernetes - 为什么 AKS 创建的 Azure 负载均衡器设置为将流量定向到节点上的端口 80 和 443,而不是服务打开的节点端口?

node.js - 无法正确连接到 Kubernetes 中的 Redis

docker - 在Windows上使用docker-compose增加Docker容器的内存?

.net - 这个项目不知道如何运行配置文件 docker

Docker 和 gcplogs : message as json