Uploaded image for project: 'Bamboo Data Center'
  1. Bamboo Data Center
  2. BAM-17959

Docker Inspect command does not work on Windows

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Low
    • None
    • 5.14.0
    • Docker

    Description

      Summary

      The following command does not work when run on Docker for Windows version 1.12

      docker.exe inspect --format='{{(index (index .NetworkSettings.Ports "$port_number/tcp") 0).HostPort}}' $instance_name
      

      It works on linux and OSX.

      This affects Deployment Tasks.

      Environment

      • Windows 10
      • Docker for Windows 1.12
      • Docker Deployment Task added with Port Mapping set

      Expected Results

      Port settings returned.

      Actual Results

      The below exception is thrown in the Build log:

      19-Oct-2016 09:02:53	Failing task since return code of [\path\to\docker.exe inspect --format='{{(index (index .NetworkSettings.Ports "$port_number/tcp") 0).HostPort}}' $instance_id] was 64 while expected 0
      19-Oct-2016 09:02:53	Error occurred while running Task 'Run Docker Container(4)' of type com.atlassian.bamboo.plugins.bamboo-docker-plugin:task.docker.cli.
      19-Oct-2016 09:02:53	com.atlassian.bamboo.task.TaskException: Failed to execute task
      19-Oct-2016 09:02:53	        at com.atlassian.bamboo.plugins.docker.service.RunService.execute(RunService.java:70)
      19-Oct-2016 09:02:53	        at com.atlassian.bamboo.plugins.docker.tasks.cli.DockerCliTask.execute(DockerCliTask.java:60)
      19-Oct-2016 09:02:53	        at com.atlassian.bamboo.task.TaskExecutorImpl.lambda$executeTasks$203(TaskExecutorImpl.java:317)
      19-Oct-2016 09:02:53	        at com.atlassian.bamboo.task.TaskExecutorImpl.executeTaskWithPrePostActions(TaskExecutorImpl.java:246)
      19-Oct-2016 09:02:53	        at com.atlassian.bamboo.task.TaskExecutorImpl.executeTasks(TaskExecutorImpl.java:317)
      19-Oct-2016 09:02:53	        at com.atlassian.bamboo.task.TaskExecutorImpl.execute(TaskExecutorImpl.java:118)
      19-Oct-2016 09:02:53	        at com.atlassian.bamboo.build.pipeline.tasks.ExecuteBuildTask.call(ExecuteBuildTask.java:74)
      19-Oct-2016 09:02:53	        at com.atlassian.bamboo.v2.build.agent.DefaultBuildAgent.build(DefaultBuildAgent.java:215)
      19-Oct-2016 09:02:53	        at com.atlassian.bamboo.v2.build.agent.BuildAgentControllerImpl$1.call(BuildAgentControllerImpl.java:139)
      19-Oct-2016 09:02:53	        at com.atlassian.bamboo.v2.build.agent.BuildAgentControllerImpl$1.call(BuildAgentControllerImpl.java:130)
      19-Oct-2016 09:02:53	        at com.atlassian.bamboo.variable.CustomVariableContextImpl.withVariableSubstitutor(CustomVariableContextImpl.java:221)
      19-Oct-2016 09:02:53	        at com.atlassian.bamboo.v2.build.agent.BuildAgentControllerImpl.waitAndPerformBuild(BuildAgentControllerImpl.java:129)
      19-Oct-2016 09:02:53	        at com.atlassian.bamboo.v2.build.agent.DefaultBuildAgent$1.run(DefaultBuildAgent.java:137)
      19-Oct-2016 09:02:53	        at com.atlassian.bamboo.utils.BambooRunnables$1.run(BambooRunnables.java:51)
      19-Oct-2016 09:02:53	        at com.atlassian.bamboo.security.ImpersonationHelper.runWith(ImpersonationHelper.java:31)
      19-Oct-2016 09:02:53	        at com.atlassian.bamboo.security.ImpersonationHelper.runWithSystemAuthority(ImpersonationHelper.java:20)
      19-Oct-2016 09:02:53	        at com.atlassian.bamboo.security.ImpersonationHelper$1.run(ImpersonationHelper.java:52)
      19-Oct-2016 09:02:53	        at java.lang.Thread.run(Unknown Source)
      19-Oct-2016 09:02:53	Caused by: com.atlassian.bamboo.plugins.docker.client.DockerException: Error running Docker inspect command
      19-Oct-2016 09:02:53	        at com.atlassian.bamboo.plugins.docker.client.DockerCmd.getHostPort(DockerCmd.java:144)
      19-Oct-2016 09:02:53	        at com.atlassian.bamboo.plugins.docker.service.RunService.getServiceUrl(RunService.java:143)
      19-Oct-2016 09:02:53	        at com.atlassian.bamboo.plugins.docker.service.RunService.execute(RunService.java:63)
      19-Oct-2016 09:02:53	        ... 17 more
      19-Oct-2016 09:02:53	Caused by: com.atlassian.utils.process.ProcessException: Error executing \path\to\docker.exe inspect --format='{{(index (index .NetworkSettings.Ports "$port_number/tcp") 0).HostPort}}' $instance_id
      19-Oct-2016 09:02:53	        at com.atlassian.bamboo.plugins.docker.process.DockerTaskProcessService.execute(DockerTaskProcessService.java:60)
      19-Oct-2016 09:02:53	        at com.atlassian.bamboo.plugins.docker.client.DockerCmd.getHostPort(DockerCmd.java:140)
      19-Oct-2016 09:02:53	        ... 19 more
      

      Workaround

      You can use a Script Task before the Docker Task, to wait for the port to open. This can be done with a PowerShell or CMD command like this or this. You will need to write out the Docker commands that you want to use.

      External links

      This issue was initially reported to Docker here: https://github.com/docker/toolbox/issues/433
      But the recommended fix doesn't work in this case.

      We opened this ticket to follow-up: https://github.com/docker/docker/issues/27592

      Attachments

        Issue Links

          Activity

            People

              kbrazulewicz Krystian Brazulewicz
              ezeidan Elias Zeidan (they/them)
              Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated: