如何将OpenFaaS图像推送到Minishift / Openshift Docker注册表?

时间:2018-03-22 16:38:38

标签: docker openshift minishift faas

我试图将本地编写的OpenFaaS功能部署到Minishift。我的YAML文件是:

provider:
  name: faas
  gateway: http://gateway-openfaas.10.10.80.33.nip.io

functions:
  test:
  lang: python
  handler: ./test
  image: 172.30.1.1:5000/test

172.30.1.1:5000是调用

的结果
minishift openshift registry

当我通过Openshift控制台访问OpenFaaS UI时,我可以从那里正确部署功能。我还可以看到我尝试在本地部署的功能,但Docker镜像不在Minishift Docker注册表中。为了在那里推动我的形象,我试图使用命令:

faas-cli push -f ./test.yml

不幸的是,我收到以下错误:

PS D:\projects> faas-cli push -f ./test.yml
[0] > Pushing test.
The push refers to a repository [172.30.1.1:5000/test]
8124325a272a: Preparing
2fbb584cb870: Preparing
e6dd715c8997: Preparing
ac20ff3419a9: Preparing
18adf8f88cf9: Preparing
ab495c1b9bd4: Waiting
09c56bd3ad6c: Waiting
a291b1700920: Waiting
8a65d1376e5b: Waiting
155a0aa5c33a: Waiting
8984417f4638: Waiting
a7d53ea16e81: Waiting
e53f74215d12: Waiting
unauthorized: repository name "test" invalid: it must be of the format 
<project>/<name>
2018/03/22 11:30:53 ERROR - Could not execute command: [docker push 
172.30.1.1:5000/test]

我做错了什么?任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:3)

Looks like您需要在图片名称前加上项目名称,例如以下示例中的openshift

$ docker push 172.30.124.220:5000/openshift/busybox
...
cf2616975b4a: Image successfully pushed
Digest: sha256:3662dd821983bc4326bee12caec61367e7fb6f6a3ee547cbaff98f77403cab55

尝试将test.yml中的图片部分更改为172.30.1.1:5000/openfaas/test或类似。

您可能还需要获取访问令牌并将其与docker login一起使用,如上所述,如果您还没有这样做:

$ oc whoami -t
$ docker login -u <username> -e <any_email_address> -p <token_value> <registry_service_host:port>

答案 1 :(得分:0)

@codemonkey是对的。需要将项目名称包含在任何应用程序映像中。

另外,我建议你尝试$(minishift openshift注册表),因为如果你给你注册IP:端口。

查看更多详情查看更多https://docs.openshift.org/latest/minishift/openshift/openshift-docker-registry.html