You seem to be confusing some terminology.
A Publishing Target is a database. Out of the box, sitecore comes with one publishing target called Web. When you perform a publish and select a target, a copy of all 'publishable' items are copied from the master database to that target database.
To create a new publishing target, you need to first create a new database, add a new connection string, then add the target in the content editor. A preview target is a special type of publishing target (which you identify by checkbox when creating it in content editor) that sits outside of standard workflow behaviour.
You mention copying CM docker compose instructions and removing master connection string. What you are describing here is creating a second instance (CM). When viewed in front end, this will display data from the web database (identical to first CM). To display info from the new preview target, you need to update the web connection string on the new instance, to point to the new database.
You then mention custom indexes, yet have provided no information about how you have set these up.
When setting up a custom index, you can specify which databases that are crawled to create the index. So if you wanted one that only shows data crawled from your preview database, then you would need to configure a new one to point to the preview database or add preview to existing one and tailor your solr query accordingly to choose which database.
Apologies if I have misunderstood your question, if so please more details showing exactly how you have setup the custom index.
UPDATE
First of all, I suggest searching the main log file on your preview instance to see if there are any exceptions relating to the setting up and connewction of SOLR.
Second, navigate the config files and ensure the exact same SOLR config files are in place and that there are no role based exclusions (i.e. if the configs are for contentmanagement only and you have somehow changed the orole in web.config).
Finally, if the component you are using to call the index has no dependencies on data from the preview publishing target (i.e. DB), then it should be producing the exact same queries.
To confirm this, please navigate to the page with the component on it, then check the search.log file. The last log shown there should show the last query sent to solr from your application. This should be identical on both your CM and Preview instances.
If it is not, then the component has beeb built to call a different query, or it is somehow being influenced by what has been published to the preview database.
You can compare each query directly on the solr dashboard, by going to dashboard => select core => query ? then paste in query into the URL.