Skip to content
Snippets Groups Projects
Select Git revision
  • gh-pages protected
  • main default protected
  • release-1.15 protected
  • release-1.14 protected
  • add-libseccomp-virtual-package
  • dev/fix_ebpf_permissions
  • release-1.13 protected
  • CNT-4283/add-syscalls-for-seccomp
  • release-1.12 protected
  • fix-wsl2-segfault
  • build-package-image
  • jetson protected
  • source-tar
  • v1.15.0
  • v1.15.0-rc.4
  • v1.14.6
  • v1.14.4
  • v1.14.5
  • v1.15.0-rc.2
  • v1.15.0-rc.3
  • v1.15.0-rc.1
  • v1.14.1
  • v1.14.2
  • v1.14.3
  • v1.14.0
  • v1.13.5
  • v1.14.0-rc.2
  • v1.13.4
  • v1.13.3
  • v1.13.2
  • v1.14.0-rc.1
  • v1.13.1
  • v1.13.0
33 results

libnvidia-container

  • Clone with SSH
  • Clone with HTTPS
  • Evan Lezar's avatar
    Evan Lezar authored
    Signed-off-by: default avatarEvan Lezar <elezar@nvidia.com>
    a78dd2e4
    History

    libnvidia-container

    GitHub license GitHub release Package repository Travis Coverity Scan LGTM

    This repository provides a library and a simple CLI utility to automatically configure GNU/Linux containers leveraging NVIDIA hardware.
    The implementation relies on kernel primitives and is designed to be agnostic of the container runtime.

    Installing the library

    From packages

    Configure the package repository for your Linux distribution.

    Install the packages:

    libnvidia-container1
    libnvidia-container-tools

    From sources

    With Docker:

    # Generate docker images for a supported <os><version>
    make {ubuntu18.04, ubuntu16.04, debian10, debian9, centos7, amazonlinux2, opensuse-leap15.1}
    
    # Or generate docker images for all supported distributions in the dist/ directory
    make docker

    The resulting images have the name nvidia/libnvidia-container/<os>:<version>

    Without Docker:

    make install
    
    # Alternatively in order to customize the installation paths
    DESTDIR=/path/to/root make install prefix=/usr

    Using the library

    Container runtime example

    Refer to the nvidia-container-runtime project.

    Command line example

    # Setup a new set of namespaces
    cd $(mktemp -d) && mkdir rootfs
    sudo unshare --mount --pid --fork
    
    # Setup a rootfs based on Ubuntu 16.04 inside the new namespaces
    curl http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ubuntu-base-16.04.6-base-amd64.tar.gz | tar -C rootfs -xz
    useradd -R $(realpath rootfs) -U -u 1000 -s /bin/bash nvidia
    mount --bind rootfs rootfs
    mount --make-private rootfs
    cd rootfs
    
    # Mount standard filesystems
    mount -t proc none proc
    mount -t sysfs none sys
    mount -t tmpfs none tmp
    mount -t tmpfs none run
    
    # Isolate the first GPU device along with basic utilities
    nvidia-container-cli --load-kmods configure --ldconfig=@/sbin/ldconfig.real --no-cgroups --utility --device 0 $(pwd)
    
    # Change into the new rootfs
    pivot_root . mnt
    umount -l mnt
    exec chroot --userspec 1000:1000 . env -i bash
    
    # Run nvidia-smi from within the container
    nvidia-smi -L

    Copyright and License

    This project is released under the BSD 3-clause license.

    Additionally, this project can be dynamically linked with libelf from the elfutils package (https://sourceware.org/elfutils), in which case additional terms apply.
    Refer to NOTICE for more information.

    Issues and Contributing

    Checkout the Contributing document!