Permission denied in Docker for Specs

Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.

Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Summary

When running Specs with Docker image, the Docker instance fail to start.

Diagnosis

The following appears in the Specs build log:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 Processing Specs within Docker containerUnable to scan repository repoName (xxx) for Bamboo Specs com.atlassian.bamboo.repository.RepositoryException: Unable to scan repository repoName (xxx) for Bamboo Specs at com.atlassian.bamboo.configuration.external.RepositoryStoredSpecsServiceImpl.lambda$runSpecsWithDocker$9(RepositoryStoredSpecsServiceImpl.java:864) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at com.atlassian.bamboo.utils.BambooRunnables$1.run(BambooRunnables.java:48) at com.atlassian.bamboo.security.ImpersonationHelper.runWith(ImpersonationHelper.java:26) at com.atlassian.bamboo.security.ImpersonationHelper.runWithSystemAuthority(ImpersonationHelper.java:17) at com.atlassian.bamboo.security.ImpersonationHelper$1.run(ImpersonationHelper.java:41) at java.lang.Thread.run(Thread.java:748) Caused by: com.spotify.docker.client.exceptions.DockerException: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: java.io.IOException: Permission denied at com.spotify.docker.client.DefaultDockerClient.propagate(DefaultDockerClient.java:2828) at com.spotify.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:2692) at com.spotify.docker.client.DefaultDockerClient.requestAndTail(DefaultDockerClient.java:2777) at com.spotify.docker.client.DefaultDockerClient.pull(DefaultDockerClient.java:1326) at com.spotify.docker.client.DefaultDockerClient.pull(DefaultDockerClient.java:1303) at com.spotify.docker.client.DefaultDockerClient.pull(DefaultDockerClient.java:1297) at com.atlassian.bamboo.configuration.external.RepositoryStoredSpecsServiceImpl.lambda$runSpecsWithDocker$9(RepositoryStoredSpecsServiceImpl.java:807) ... 8 more Caused by: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: java.io.IOException: Permission denied at jersey.repackaged.com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299) at jersey.repackaged.com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286) at jersey.repackaged.com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116) at com.spotify.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:2690) ... 13 more Caused by: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: java.io.IOException: Permission denied at com.spotify.docker.client.shaded.org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:481) at com.spotify.docker.client.shaded.org.glassfish.jersey.apache.connector.ApacheConnector$1.run(ApacheConnector.java:491) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at jersey.repackaged.com.google.common.util.concurrent.MoreExecutors$DirectExecutorService.execute(MoreExecutors.java:299) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112) at jersey.repackaged.com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:50) at jersey.repackaged.com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:37) at com.spotify.docker.client.shaded.org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:487) at com.spotify.docker.client.shaded.org.glassfish.jersey.client.ClientRuntime$2.run(ClientRuntime.java:178) at com.spotify.docker.client.shaded.org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) at com.spotify.docker.client.shaded.org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) at com.spotify.docker.client.shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:315) at com.spotify.docker.client.shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:297) at com.spotify.docker.client.shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:267) at com.spotify.docker.client.shaded.org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:340) at com.spotify.docker.client.shaded.org.glassfish.jersey.client.ClientRuntime$3.run(ClientRuntime.java:210) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ... 1 more Caused by: java.io.IOException: Permission denied at jnr.unixsocket.UnixSocketChannel.doConnect(UnixSocketChannel.java:127) at jnr.unixsocket.UnixSocketChannel.connect(UnixSocketChannel.java:136) at jnr.unixsocket.UnixSocketChannel.connect(UnixSocketChannel.java:223)

Cause

The user running Bamboo server does not have permission to Docker socket file.

Solution

Docker will not allow non-root users to control it by default. To allow Bamboo to issue docker comments, you will need to add the bamboo service user to the system docker group and restart the Bamboo service.

Make sure to log out from your current "bamboo" user session before restarting the service so it can retrieve the new group membership.

1 2 3 # usermod -aG docker bamboo # groups bamboo bamboo : bamboo docker

More information: https://docs.docker.com/engine/install/linux-postinstall

Updated on March 11, 2025

Still need help?

The Atlassian Community is here for you.