code: void createImage( String imageId ) throws TargetException {
  
  		// If there is no Dockerfile, this method will do nothing
  		File targetDirectory = this.parameters.getTargetPropertiesDirectory();
  		String dockerFilePath = this.parameters.getTargetProperties().get( GENERATE_IMAGE_FROM );
  		if( ! Utils.isEmptyOrWhitespaces( dockerFilePath ) && targetDirectory != null ) {
  
  			this.logger.fine( "Trying to create image " + imageId + " from a Dockerfile." );
  			File dockerFile = new File( targetDirectory, dockerFilePath );
  			if( ! dockerFile.exists())
  				throw new TargetException( "No Dockerfile was found at " + dockerFile );
  
  			// Start the build.
  			// This will block the current thread until the creation is complete.
  			String builtImageId;
  			this.logger.fine( "Asking Docker to build the image from our Dockerfile." );
  			try {
  				builtImageId = this.dockerClient
  					.buildImageCmd( dockerFile )
  					.withTags( Sets.newHashSet( imageId ))
  					.withPull( true )
  					.exec( new RoboconfBuildImageResultCallback())
  					.awaitImageId();
  
  			} catch( Exception e ) {
  				Utils.logException( this.logger, e );
  				throw new TargetException( e );
  			}
  
  			// No need to store the real image ID... Docker has it.
  			// Besides, we search images by both IDs and tags.
  			// Anyway, we can log the information.
  			this.logger.fine( "Image '" + builtImageId + "' was succesfully generated by Roboconf." );
  		}
  	}
docs: Creates an image.
  @param imageId the image ID
  @throws TargetException if something went wrong