我正在努力按照办公室的指示去做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 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。
由于缺少对构建
的支持,因此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 .
有一个项目:
https://github.com/kubernetes/kompose
称为Docker Kompal,它可以帮助已经拥有docker-composs文件的用户通过自动将他们现有的docker-composs文件转换为许多yaml文件,尽可能轻松地在库伯内特斯部署他们的应用程序。
我在遵循官方指示时遇到了同样的问题。
为了绕过这个问题,我选择使用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