diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/DockerCommandLineBuilder.java b/src/main/java/com/google/devtools/build/lib/sandbox/DockerCommandLineBuilder.java
index db8c5c8..9f90209 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/DockerCommandLineBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/DockerCommandLineBuilder.java
@@ -16,6 +16,7 @@
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
 import com.google.devtools.build.lib.runtime.ProcessWrapperUtil;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.PathFragment;
@@ -39,6 +40,7 @@
   private int gid;
   private String commandId;
   private boolean privileged;
+  private List<Map.Entry<String, String>> additionalMounts;
 
   public DockerCommandLineBuilder setProcessWrapper(Path processWrapper) {
     this.processWrapper = processWrapper;
@@ -111,6 +113,12 @@
     return this;
   }
 
+  public DockerCommandLineBuilder setAdditionalMounts(
+      List<Map.Entry<String, String>> additionalMounts) {
+    this.additionalMounts = additionalMounts;
+    return this;
+  }
+
   public List<String> build() {
     Preconditions.checkNotNull(sandboxExecRoot, "sandboxExecRoot must be set");
     Preconditions.checkState(!imageName.isEmpty(), "imageName must be set");
@@ -138,6 +146,12 @@
         "-v", sandboxExecRoot.getPathString() + ":" + execRootInsideDocker.getPathString());
     dockerCmdLine.add("-w", execRootInsideDocker.getPathString());
 
+    for (ImmutableMap.Entry<String, String> additionalMountPath : additionalMounts) {
+      final String mountTarget = additionalMountPath.getValue();
+      final String mountSource = additionalMountPath.getKey();
+      dockerCmdLine.add("-v", mountSource + ":" + mountTarget);
+    }
+
     StringBuilder uidGidFlagBuilder = new StringBuilder();
     if (uid != 0) {
       uidGidFlagBuilder.append(uid);
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/DockerSandboxedSpawnRunner.java b/src/main/java/com/google/devtools/build/lib/sandbox/DockerSandboxedSpawnRunner.java
index 920af5a..773c17e 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/DockerSandboxedSpawnRunner.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/DockerSandboxedSpawnRunner.java
@@ -242,6 +242,7 @@
         .setImageName(customizedImageName)
         .setCommandArguments(spawn.getArguments())
         .setSandboxExecRoot(sandboxExecRoot)
+        .setAdditionalMounts(getSandboxOptions().sandboxAdditionalMounts)
         .setPrivileged(getSandboxOptions().dockerPrivileged)
         .setEnvironmentVariables(environment)
         .setKillDelay(timeoutKillDelay)
