code: func (cli *Client) ContainerCreate(ctx context.Context, config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, containerName string) (container.ContainerCreateCreatedBody, error) {
  	var response container.ContainerCreateCreatedBody
  
  	if err := cli.NewVersionError("1.25", "stop timeout"); config != nil && config.StopTimeout != nil && err != nil {
  		return response, err
  	}
  
  	// When using API 1.24 and under, the client is responsible for removing the container
  	if hostConfig != nil && versions.LessThan(cli.ClientVersion(), "1.25") {
  		hostConfig.AutoRemove = false
  	}
  
  	query := url.Values{}
  	if containerName != "" {
  		query.Set("name", containerName)
  	}
  
  	body := configWrapper{
  		Config:           config,
  		HostConfig:       hostConfig,
  		NetworkingConfig: networkingConfig,
  	}
  
  	serverResp, err := cli.post(ctx, "/containers/create", query, body, nil)
  	defer ensureReaderClosed(serverResp)
  	if err != nil {
  		return response, err
  	}
  
  	err = json.NewDecoder(serverResp.body).Decode(&response)
  	return response, err
  }
docs: // ContainerCreate creates a new container based in the given configuration.
  // It can be associated with a name, but it's not mandatory.