Your problem is that the alpine container will run as root, thus creating all the files with root as owner, while the SQL Server container runs as the user mssql with uid=10001. So when the SQL Server container starts, running as the user mssql, it can't access the files in /var/opt/mssql because they are owned by root.
I'm glad I saw this question, because it got me to invest a little time in solving the issue, as I've been facing the same thing.
Two small additions to step 3 are needed:
- create a user named mssql with uid=10001.
- after copying the files, do chown to let mssql own all the files on the destination volume.
Like so:
docker run --rm -i -t -v sqlvolume:/origen -v sqlvolume_clone:/destino alpine sh -c "adduser -u 10001 mssql; cp -avr /origen/* /destino; chown mssql -R destino"
I just tested it, and indeed the new container can now read contents from sqlvolume_clone