code: func (cli *Client) CopyToContainer(ctx context.Context, containerID, dstPath string, content io.Reader, options types.CopyToContainerOptions) error {
  	query := url.Values{}
  	query.Set("path", filepath.ToSlash(dstPath)) // Normalize the paths used in the API.
  	// Do not allow for an existing directory to be overwritten by a non-directory and vice versa.
  	if !options.AllowOverwriteDirWithFile {
  		query.Set("noOverwriteDirNonDir", "true")
  	}
  
  	if options.CopyUIDGID {
  		query.Set("copyUIDGID", "true")
  	}
  
  	apiPath := "/containers/" + containerID + "/archive"
  
  	response, err := cli.putRaw(ctx, apiPath, query, content, nil)
  	defer ensureReaderClosed(response)
  	if err != nil {
  		return wrapResponseError(err, response, "container:path", containerID+":"+dstPath)
  	}
  
  	// TODO this code converts non-error status-codes (e.g., "204 No Content") into an error; verify if this is the desired behavior
  	if response.statusCode != http.StatusOK {
  		return fmt.Errorf("unexpected status code from daemon: %d", response.statusCode)
  	}
  
  	return nil
  }
docs: // CopyToContainer copies content into the container filesystem.
  // Note that `content` must be a Reader for a TAR archive