code: func dispatchWorkdir(d dispatchRequest, c *instructions.WorkdirCommand) error {
  	runConfig := d.state.runConfig
  	var err error
  	runConfig.WorkingDir, err = normalizeWorkdir(d.state.operatingSystem, runConfig.WorkingDir, c.Path)
  	if err != nil {
  		return err
  	}
  
  	// For performance reasons, we explicitly do a create/mkdir now
  	// This avoids having an unnecessary expensive mount/unmount calls
  	// (on Windows in particular) during each container create.
  	// Prior to 1.13, the mkdir was deferred and not executed at this step.
  	if d.builder.disableCommit {
  		// Don't call back into the daemon if we're going through docker commit --change "WORKDIR /foo".
  		// We've already updated the runConfig and that's enough.
  		return nil
  	}
  
  	comment := "WORKDIR " + runConfig.WorkingDir
  	runConfigWithCommentCmd := copyRunConfig(runConfig, withCmdCommentString(comment, d.state.operatingSystem))
  
  	containerID, err := d.builder.probeAndCreate(d.state, runConfigWithCommentCmd)
  	if err != nil || containerID == "" {
  		return err
  	}
  
  	if err := d.builder.docker.ContainerCreateWorkdir(containerID); err != nil {
  		return err
  	}
  
  	return d.builder.commitContainer(d.state, containerID, runConfigWithCommentCmd)
  }
docs: // WORKDIR /tmp
  //
  // Set the working directory for future RUN/CMD/etc statements.
  //