@@ -420,12 +420,13 @@ function getFeatureEnvVariables(f: Feature) {
420420
421421export async function getRemoteUserUIDUpdateDetails ( params : DockerResolverParameters , mergedConfig : MergedDevContainerConfig , imageName : string , imageDetails : ( ) => Promise < ImageDetails > , runArgsUser : string | undefined ) {
422422 const { common } = params ;
423- const { cliHost } = common ;
423+ const { cliHost, output } = common ;
424424 const { updateRemoteUserUID } = mergedConfig ;
425425 if ( params . updateRemoteUserUIDDefault === 'never' || ! ( typeof updateRemoteUserUID === 'boolean' ? updateRemoteUserUID : params . updateRemoteUserUIDDefault === 'on' ) || ! ( cliHost . platform === 'linux' || params . updateRemoteUserUIDOnMacOS && cliHost . platform === 'darwin' ) ) {
426426 return null ;
427427 }
428428 const details = await imageDetails ( ) ;
429+ output . write ( `updateUID: image=${ imageName } Os=${ details . Os } Architecture=${ details . Architecture } Variant=${ details . Variant || '(none)' } ` , LogLevel . Info ) ;
429430 const imageUser = details . Config . User || 'root' ;
430431 const remoteUser = mergedConfig . remoteUser || runArgsUser || imageUser ;
431432 if ( remoteUser === 'root' || / ^ \d + $ / . test ( remoteUser ) ) {
@@ -434,11 +435,13 @@ export async function getRemoteUserUIDUpdateDetails(params: DockerResolverParame
434435 const folderImageName = getFolderImageName ( common ) ;
435436 const fixedImageName = `${ imageName . startsWith ( folderImageName ) ? imageName : folderImageName } -uid` ;
436437
438+ const platform = [ details . Os , details . Architecture , details . Variant ] . filter ( Boolean ) . join ( '/' ) ;
439+ output . write ( `updateUID: remoteUser=${ remoteUser } imageUser=${ imageUser } platform=${ platform } ` , LogLevel . Info ) ;
437440 return {
438441 imageName : fixedImageName ,
439442 remoteUser,
440443 imageUser,
441- platform : [ details . Os , details . Architecture , details . Variant ] . filter ( Boolean ) . join ( '/' )
444+ platform,
442445 } ;
443446}
444447
@@ -451,6 +454,20 @@ export async function updateRemoteUserUID(params: DockerResolverParameters, merg
451454 return imageName ;
452455 }
453456 const { imageName : fixedImageName , remoteUser, imageUser, platform } = updateDetails ;
457+ const { output } = common ;
458+
459+ try {
460+ const infoResult = await dockerCLI ( params , 'info' , '--format' , '{{.Driver}} / containerd: {{.DriverStatus}}' ) ;
461+ output . write ( `updateUID: docker info: ${ infoResult . stdout . toString ( ) . trim ( ) } ` , LogLevel . Info ) ;
462+ } catch ( err ) {
463+ output . write ( `updateUID: docker info failed: ${ err } ` , LogLevel . Warning ) ;
464+ }
465+ try {
466+ const inspectResult = await dockerCLI ( params , 'inspect' , '--type' , 'image' , imageName ) ;
467+ output . write ( `updateUID: docker inspect ${ imageName } : ${ inspectResult . stdout . toString ( ) . trim ( ) } ` , LogLevel . Info ) ;
468+ } catch ( err ) {
469+ output . write ( `updateUID: docker inspect failed: ${ err } ` , LogLevel . Warning ) ;
470+ }
454471
455472 const dockerfileName = 'updateUID.Dockerfile' ;
456473 const srcDockerfile = path . join ( common . extensionPath , 'scripts' , dockerfileName ) ;
@@ -474,6 +491,7 @@ export async function updateRemoteUserUID(params: DockerResolverParameters, merg
474491 '--build-arg' , `IMAGE_USER=${ imageUser } ` ,
475492 emptyFolder ,
476493 ] ;
494+ output . write ( `updateUID: docker ${ args . join ( ' ' ) } ` , LogLevel . Info ) ;
477495 if ( params . isTTY ) {
478496 await dockerPtyCLI ( params , ...args ) ;
479497 } else {
0 commit comments