One of the problems you can encounter when attaching a Solaris zone (not a kernel zone) on a new host, is that the global zone may not have packages installed that are needed by the non-global zone. For example:
root@mygz:~# zoneadm -z myzone attach -u Progress being logged to /var/log/zones/zoneadm.20180613T222859Z.myzone.attach Converting detached zone boot environment 'solaris-0'. Installing: Using existing zone boot environment Zone BE root dataset: zone_pool_01/myzone/rpool/ROOT/solaris-0 Cache: Using /var/pkg/publisher. Updating image format Image format already current. Updating non-global zone: Linking to image /. Processing linked: 1/1 done Updating non-global zone: Syncing packages (pass 1 of 2). Creating Plan (Solver setup): |ERROR: Could not update attaching zone Log saved in non-global zone as /zones/myzone/root/var/log/zones/zoneadm.20180613T222859Z.myzone.attach zoneadm: zone 'myzone': NOTICE: attach partially succeeded: zone transitioning to unavailable state
Take a look in the output file that it references for the attach. You are looking for messages indicating a particular package is not installed in the global zone. The attach log file can be extremely verbose, so search for the phrase “not installed”, which should tell you which package you need to install in the global zone.
root@mygz:~# less /zones/myzone/root/var/log/zones/zoneadm.20180613T222859Z.myzone.attach ... Reason: Package driver/x11/winlock is not installed in global zone ...
Install the missing package in the global zone and try your attach again:
pkg install driver/x11/winlock zoneadm -z myzone -u