Docker推送错误与无效标记或引用

我有一个Travis CI构build,试图推送到dockerregistry,这是我在构build日志中看到的:

[info] Built image repo.treescale.com/[secure]/inland24/plant-simulator:1.0-SNAPSHOT 

但下一行,我看到以下内容:

 Error parsing reference: "/:" is not a valid repository/tag: invalid reference format 

这就是我的docker push命令:

 docker push $DOCKER_REGISTRY_URL/$APPLICATION_NAME:$IMAGE_VERSION_DEV; 

这里是参数:

  - APPLICATION_NAME = [secure]/inland24/plant-simulator - IMAGE_VERSION_DEV = 1.0-SNAPSHOT - DOCKER_REGISTRY_URL = repo.treescale.com 

假设[secure]已parsing为正确的用户名! 我得到了什么样的错误,以及如何解决?

我试图列出所有的图像,我可以看到我的图像存在于正在运行构build的本地机器上:

 REPOSITORY TAG IMAGE ID CREATED SIZE repo.treescale.com/[secure]/inland24/plant-simulator 1.0-SNAPSHOT 34842cf7482e Less than a second ago 225 MB anapsix/alpine-java 8_server-jre_unlimited bd197f461851 11 days ago 124 MB 

你的错误清楚地表明出了什么问题。 您正在使用

 docker push $DOCKER_REGISTRY_URL/$APPLICATION_NAME:$IMAGE_VERSION_DEV; 

parsing引用时出错:“/:”不是有效的存储库/标记:无效的引用格式

如果我空白所有的环境variables,然后我得到

 docker push /: 

这给了我同样的错误。 在docker push之前使用一个env命令,确保你的环境variables实际上是否存在。 如果没有,然后找出原因

括号是不允许的。

https://github.com/docker/distribution/blob/master/docs/spec/api.md

存储库名称被分解为path组件。 存储库名称的组件必须至less包含一个小写字母数字字符,可以用句点,短划线或下划线进行分隔。 更严格的说,它必须匹配正则expression式[a-z0-9] +(?:[._-] [a-z0-9] +)*

我解决了这个问题,通过移动docker推到作业描述之外的位,如下所示在我的yml代码片段中:

 jobs: include: - stage: test script: sbt clean coverage test coverageReport - stage: build docker image script: - if [ $TRAVIS_BRANCH == "master" ]; then sbt docker:publishLocal; docker images; fi after_script: - if [ $TRAVIS_BRANCH == "master" ]; then echo "Completed building docker image"; docker login -u $DOCKER_REGISTRY_USERNAME -p $DOCKER_REGISTRY_PASSWORD $DOCKER_REGISTRY_URL; docker push $DOCKER_APP_NAME; fi - echo $TRAVIS_BRANCH 

所以,早些时候我在作业阶段脚本中使用了docker login和docker push命令,并且把它移出了一个后脚本,这个脚本已经成功了!

Interesting Posts