# Install podman or Docker in Ubuntu ###### tags: `c4lab` ## Install Driver check if you have GPU(pysical) `lspci | grep -i nvidia` ### Disable nouveau `vim /etc/modprobe.d/blacklist-nouveau.conf` ``` blacklist nouveau options nouveau modeset=0 ``` then ``` sudo update-initramfs -u sudo reboot ``` ### Install NVIDIA driver (Old) Download nvidia driver https://www.nvidia.com/Download/index.aspx e.g. ``` wget https://us.download.nvidia.com/XFree86/Linux-x86_64/450.66/NVIDIA-Linux-x86_64-450.66.run ``` and run ``` bash sudo apt install -y build-essential chmod +x NVIDIA-Linux-x86_64-418.74.run sudo ./NVIDIA-Linux-x86_64-418.74.run ``` ### Install NVIDIA driver (new) https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=deb_network ``` apt intall cuda libcudnn8-dev ``` ## Install Docker-ce(Can skip) ``` bash sudo apt update && \ sudo apt -y install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common \ build-essential echo "add gpg docker key and stable repository" curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" sudo apt install -y docker-ce sudo usermod -aG docker $USER ``` ### Install NVIDIA container(Can skip) ``` shell export distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update sudo apt-get install -y nvidia-docker2 ``` ## Install Podman ``` bash . /etc/os-release echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/Release.key | sudo apt-key add - sudo apt update sudo apt install -y podman ``` ## Install nvidia driver for podman ``` bash export distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.listsudo apt-get update sudo apt update sudo apt install nvidia-container-runtime ``` ## Fix Podman bugs Add this to /etc/nvidia-container-runtime/config.toml ``` init [nvidia-container-cli] no-cgroups = true ``` Add alias in `/etc/containers/containers.conf` or `/usr/share/containers/containers.conf` ``` init [engine.runtimes] runc = [ ... ] nvidia = ["/usr/bin/nvidia-container-runtime"] ``` Run it ``` bash podman run -it --rm --runtime nvidia nvidia/cuda:11.0-base nvidia-smi ``` ## User config (SKIP) podman config for each user is located at `~/.config/containers/storage.conf` ``` [storage] runroot = "/run/user/1000/containers" # graphroot = "/home/c4lab/.local/share/containers/storage" graphroot = "/opt/container/c4lab" ``` ## Post-install edit `/etc/bash.bashrc` ``` bashrc export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} ``` ## Test it https://gist.github.com/linnil1/c7a854a47f5c225aa4996651c61904d6 ## Reference * https://linuxconfig.org/how-to-disable-nouveau-nvidia-driver-on-ubuntu-18-04-bionic-beaver-linux * https://docs.docker.com/engine/install/ubuntu/ * https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker * https://github.com/containers/podman/issues/3659 * https://podman.io/getting-started/installation * https://developer.nvidia.com/cuda-downloads * https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html