我正在尝试按照 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 build
和 docker-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
的支持,因此不会有image
为web
服务容器运行。
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/