private List < Resolvable > resolve ( List < Resolvable > images ) { List < Resolvable > resolved = new ArrayList <> ( ) ; // First pass: Pick all data images and all without dependencies for ( Resolvable config : images ) { List < String > volumesOrLinks = extractDependentImagesFor ( config ) ; if ( volumesOrLinks == null ) { // A data image only or no dependency. Add it to the list of data image which can be always // created first. updateProcessedImages ( config ) ; resolved . add ( config ) ; } else { secondPass . add ( config ) ; } } // Next passes: Those with dependencies are checked whether they already have been visited. return secondPass . size ( ) > 0 ? resolveRemaining ( resolved ) : resolved ; }
an appropriate container which can be linked into the image