## 🐛 Bug Report
There is no way to provide max-sessions parameter in the docker section of the standalone config file


## To Reproduce

My grid config looks as follows. Is there a way to limit the number of sessions available for both Firefox and Chrome in the docker section of standalone config file
```[toml]
[node]
detect-drivers = false
max-sessions=4

[docker]
configs = ["selenium/standalone-chrome:latest", "{\"browserName\": \"chrome\", \"browserVersion\": \"91\"}", "selenium/standalone-firefox:latest", "{\"browserName\": \"firefox\", \"browserVersion\": \"89\"}"]
host = "localhost"
port = 2375
url = "unix:/var/run/docker.sock"
video-image = "selenium/video:latest"
```

Running this command `java -jar selenium-server-4.0.0-beta-4.jar standalone --config grid.config.toml` creates 12 sessions each of Chrome and Firefox with a max concurrency of 4

![image](https://user-images.githubusercontent.com/17963268/126071586-743c2f2a-3ed3-4299-b8bf-1512c70d1f12.png)

In the file https://github.com/SeleniumHQ/selenium/blob/941dc9c6b2e2aa4f701c1b72be8de03d4b7e996a/java/server/src/org/openqa/selenium/grid/docker/DockerOptions.java#L137

 we have initialised it to the # of availableProcessors

whereas in the file https://github.com/SeleniumHQ/selenium/blob/941dc9c6b2e2aa4f701c1b72be8de03d4b7e996a/java/server/src/org/openqa/selenium/grid/node/config/NodeOptions.java#L79

we take into consideration the value available in the node section of the config file

## Expected behavior

There should be a config to set max-sessions in the docker section

## Test script or set of commands reproducing this issue

## Environment

Selenium Grid version (if applicable): selenium-server-4.0.0-beta-4

if (mountedVolume.isPresent()) {
        String hostPath = String.valueOf(mountedVolume.get().get("Source"));
        return new DockerAssetsPath(hostPath, DEFAULT_ASSETS_PATH);
      }
    }
    Optional<String> assetsPath = config.get(DOCKER_SECTION, "assets-path");
    
    
    return assetsPath.map(path -> new DockerAssetsPath(path, path)).orElse(null);
  }
  private void loadImages(Docker docker, String... imageNames) {
    CompletableFuture<Void> cd = CompletableFuture.allOf(
      Arrays.stream(imageNames)
            .map(name -> CompletableFuture.supplyAsync(() -> docker.getImage(name)))
          .toArray(CompletableFuture[]::new));
    try {
      cd.get();
    } catch (InterruptedException e) {
      Thread.currentThread().interrupt();
      throw new RuntimeException(e);
    } catch (ExecutionException e) {
      Throwable cause = e.getCause() != null ? e.getCause() : e;
      if (cause instanceof RuntimeException) {
        throw (RuntimeException) cause;
      }
      throw new RuntimeException(cause);
    }
  }
}