There was a previous attempt to provide a "complete" answer, but it did not take CSS copy protection into account. So here's my attempt at a follow-up. I am taking the approach of trying the lightest touch first, and then moving on to increasingly aggressive approaches only as circumstances warrant.
If the DVD does not use CSS (content scramble system) encryption, then the simple dd command recommended in other answers will work.
(All code snippets are borrowed from previous answers)
# isoinfo -d -i /dev/sr1 | grep -i -E 'block size|volume size'
Logical block size is: 2048
Volume size is: 2264834
# dd if=/dev/sr1 of=backup.iso bs=[Logical Block Size from above] count=[Volume size from above]
If the disc does use CSS encryption, but no other tricks such as "fake" bad blocks, then the dd command by itself may not work. This is because the firmware inside most DVD drives will recognize the presence of CSS encryption, and will refuse to allow low-level read access to any sectors that are marked as subject to copyright protection. You must use a program which invokes the DeCSS library (or something equivalent) to "unlock" the disc in the drive's firmware first, and then the dd command can do its job. The DeCSS library is not included by default a fresh Ubuntu installation, but there are instructions in the "Restricted Formats" section of the Ubuntu Wiki to install it. Be aware that using this software may carry legal consequences in some jurisdictions.
# apt install libdvd-pkg && dpkg-reconfigure libdvd-pkg
# apt install mplayer
# mplayer -dvd-device /dev/sr0 dvd:// -vo null -ao null -ss 10 -endpos 1
Now continue with the isoinfo and dd commands above
If the disc has both CSS encryption and additional protective measures such as fake bad blocks, then just unlocking the disc in the drive's firmware is not enough. Even though it is perfectly normal for such a disc to present unrecoverable errors when you attempt to read these fake bad blocks, the video content itself is actually completely intact. However, the normal dd command would likely abort at the first such block it encounters. ddrescue would be your friend in that case.
# apt install gddrescue
Use the instructions above to use a DeCSS-enabled player app to unlock the drive's firmware. Instead of moving on to isoinfo and dd, use ddrescue:
# ddrescue --no-scrape /dev/sr0 backup.iso