Bluemix Docker Container cf ic登录无法访问本地Docker守护程序进行身份验证

时间:2015-11-08 03:44:03

标签: docker ibm-cloud

我正在使用ic插件运行使用docker容器和Bluemix的指示。当我运行命令时:

cf ic login

我收到消息:

  

您的系统已使用IBM Containers API进行身份验证,但是   无法访问本地Docker守护程序以与IBM进行身份验证   容器注册表。您仍然可以在云上运行IBM Containers   将无法推或拉图像。

如果我在本地使用docker而不运行cf ic登录,那么一切似乎都没问题。

在cf ic登录后,如果我运行任何docker命令,例如:

docker tag ibmjstart/bluemix-wordpress registry.ng.bluemix.net/myNamespace/wordpress

命令失败并显示消息:

  

来自守护程序的错误响应:405不允许的方法

不允许的方法

请求的URL不允许使用该方法。

非常感谢任何有关检查事项的指导。谢谢!

2 个答案:

答案 0 :(得分:1)

V.Bontempi提供的答案非常有用,可能只是让我不太了解他所说的内容,但澄清它实际上是将env变量设置为将专门指向Bluemix 这导致了这个问题。设置env变量

export DOCKER_HOST=tcp://containers-api.ng.bluemix.net:8443
export DOCKER_CERT_PATH=/Users/jeff/.ice/certs/containers-api.ng.bluemix.net
export DOCKER_TLS_VERIFY=1

这告诉docker专门使用Bluemix而不是本地实例。所以,如果我设置env变量,在我尝试使用本地图像并按照此处的教程标记它之后执行此操作:

WordPress on Bluemix Containers

我尝试运行命令:

docker tag ibmjstart/bluemix-wordpress registry.ng.bluemix.net/[namespace]/wordpress

使用我的命名空间,命令会因405错误而失败。另一方面,如果我运行以下序列的命令而没有导出,一切都按预期工作:

cf login
cf ic login [-a https://api.ng.bluemix.net] [-H https://containers-api.ng.bluemix.net/v2/containers] [-R registry.ng.bluemix.net]
docker tag ibmjstart/bluemix-wordpress registry.ng.bluemix.net/myNamespace/wordpress
docker push registry.ng.bluemix.net/[namespace]/wordpress

支持团队向我提供了以下解释:

1)安装并配置docker以在本地工作     这是您需要做的第一个想法,因此您可以在推送到Bluemix中的IBM Containers之前在本地创建映像。     要使此步骤起作用,您必须配置docker环境变量。为此,您可以运行以下命令:            eval" $(docker-machine env default)"

这将为您本地的docker设置环境变量。如果不设置此变量,Docker将无法工作。    设置完成后,您可以尝试基本的docker命令,例如:

      docker images
      docker ps

如果您没有设置环境变量,您会注意到这些命令不起作用。

2)登录Bluemix和IBM Containers     现在已安装并配置了docker,您可以使用以下命令登录:

       cf login 
       cf ic login 

After that you can start playing with your images and pushing them to IBM Containers in Bluemix once they are ready.

感谢Bluemix支持团队的帮助!

答案 1 :(得分:0)

这是因为cf ic输出建议您在使用docker client远程工作之前必须将docker从本地引擎切换到Bluemix。 根据cf ic login的输出建议,您只需将以下env变量设置为远程Bluemix引用,完全按照建议 DOCKER_TLS_VERIFY DOCKER_HOST DOCKER_CERT_PATH

然后,如果您想切换回来,只需将值设置为之前的值(最终打印并在切换前保存)