Unable to start systemd container using Docker (CentOS 7.8 Host). Failed to mount API filesystems, freezing

I am trying to run a container with systemd but I keep getting the following error –

Failed to mount tmpfs at /run: Operation not permitted
Failed to mount cgroup at /sys/fs/cgroup/systemd: Operation not permitted
[!!!!!!] Failed to mount API filesystems, freezing.

I have read the Official documentation of CentOS on Dockerhub. Accordingly I have made the dockerfile as follows(recommended by CentOS documentation on Dockerhub).

FROM centos:7.8.2003
ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == 
systemd-tmpfiles-setup.service ] || rm -f $i; done); 
rm -f /lib/systemd/system/multi-user.target.wants/*;
rm -f /etc/systemd/system/*.wants/*;
rm -f /lib/systemd/system/local-fs.target.wants/*; 
rm -f /lib/systemd/system/sockets.target.wants/*udev*; 
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; 
rm -f /lib/systemd/system/basic.target.wants/*;
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
CMD ["/usr/sbin/init"]

Also after reading the blog of Daniel Walsh on RedHat, I installed the OCI hooks hoping that they would solve the problem.

[[email protected] ~]# rpm -qa | grep oci

However when I start the container using the command docker run --name="OS-level-try" -it 2_os_image , I get the aforementioned error of "Failed to mount API filesystem". But if I try running the container with SystemAdmin capabilities it runs smoothly. Like this – docker run --cap-add SYS_ADMIN --name="OS-level" -d --rm 2_os_image

Question-1 If I have to use SYS_ADMIN capibilities to run the container, then what is the use of OCI hooks? They seem to be quiet redundant.

Question-2 How can I run the container without giving out SYS_ADMIN capabilities to the container?

PS- 2_os_image is the docker image built from the aforementioned dockerfile.

Source: Docker Questions