I do not know about having it be with respect to container width. I was trying to use something like 10vw. But That wasn't working out well. So here is what I did.
const width = window.innerWidth * 0.1;
const columns = [
{ field: 'id', headerName: 'ID', width: width },
{ field: 'user', headerName: 'User', width: width },
{ field: 'table', headerName: 'Table', width: width },
{ field: 'action', headerName: 'Action', width: width },
{ field: 'fileName', headerName: 'File Name', width: width },
{ field: 'fileSize', headerName: 'Size', width: width },
{ field: 'rows', headerName: 'Rows', type: 'number', width: width }
];
If you do some math, you should be able to calculate what percent of the screen each column should take up. And it should work. There may be a way of using container.innerWidth instead of the entire window but im not sure about that.