Yes, I use this kind of setup in a number of places. I am also a fan of running the full test suite using SQLite (if you are using a compatible ORM) to make sure where you are (or not) running into DB-specific behavior.
With testcontainers you can use exactly the same database you do in production.
If your application only uses one database in production, you probably don't want to use an ORM, because that might prevent you from using all of your db’s features.
The testcontainer is agnostic to how you use it; it's a real docker container.
Sure, but you may want to use different databases as your application may be expected to be deployed in different environments. I like to keep some of my apps db-agnostic, so I test with postgres in a testcontainer and sqlite outside of one to ensure consistency.