- FROM ubuntu:16.04
-
- # Make all NVIDIA GPUS visible, but I want to manually install drivers
- ARG NVIDIA_VISIBLE_DEVICES=all
- # Supress interactive menu while installing keyboard-configuration
- ARG DEBIAN_FRONTEND=noninteractive
-
-
- # (1) Install Xorg and NVIDIA driver inside the container
- # Almost same procesure as nvidia/driver https://gitlab.com/nvidia/driver/blob/master/ubuntu16.04/Dockerfile
-
- # (1-1) Install prerequisites
- RUN dpkg --add-architecture i386 && \
- apt-get update && apt-get install -y --no-install-recommends \
- apt-utils \
- build-essential \
- ca-certificates \
- curl \
- wget \
- vim \
- zip \
- unzip \
- git \
- python \
- kmod \
- libc6:i386 \
- pkg-config \
- libelf-dev && \
- rm -rf /var/lib/apt/lists/*
-
- # (1-2) Install xorg server and xinit BEFORE INSTALLING NVIDIA DRIVER.
- # After this installation, command Xorg and xinit can be used in the container
- RUN apt-get update && apt-get install -y \
- xinit && \
- rm -rf /var/lib/apt/lists/*
-
- # (1-3) Install NVIDIA drivers, including X graphic drivers
- # Same command as nvidia/driver, except --x-{prefix,module-path,library-path,sysconfig-path} are omitted in order to make use default path and enable X drivers.
- # Driver version must be equal to host's driver
- # Install the userspace components and copy the kernel module sources.
- ENV DRIVER_VERSION=418.87.01
- RUN cd /tmp && \
- curl -fSsl -O https://us.download.nvidia.com/tesla/418.87/NVIDIA-Linux-x86_64-418.87.01.run && \
- sh NVIDIA-Linux-x86_64-$DRIVER_VERSION.run -x && \
- cd NVIDIA-Linux-x86_64-$DRIVER_VERSION* && \
- ./nvidia-installer --silent \
- --no-kernel-module \
- --install-compat32-libs \
- --no-nouveau-check \
- --no-nvidia-modprobe \
- --no-rpms \
- --no-backup \
- --no-check-for-alternate-installs \
- --no-libglx-indirect \
- --no-glvnd-egl-client \
- --no-glvnd-glx-client \
- --no-install-libglvnd && \
- mkdir -p /usr/src/nvidia-$DRIVER_VERSION && \
- mv LICENSE mkprecompiled kernel /usr/src/nvidia-$DRIVER_VERSION && \
- sed '9,${/^\(kernel\|LICENSE\)/!d}' .manifest > /usr/src/nvidia-$DRIVER_VERSION/.manifest && \
- rm -rf /tmp/*
- # this option cannot be used on newer driver
- # --no-glvnd-egl-client \
- # --no-glvnd-glx-client \
-
- # (2) Configurate Xorg
- # (2-1) Install some necessary softwares
- #
- # pkg-config: nvidia-xconfig requires this package
- # mesa-utils: This package includes glxgears and glxinfo, which is useful for testing GLX drivers
- # x11vnc: Make connection between x11 server and VNC client.
- # x11-apps: xeyes can be used to make sure that X11 server is running.
- #
- RUN apt-get update && apt-get install -y --no-install-recommends \
- mesa-utils \
- x11vnc \
- x11-apps && \
- rm -rf /var/lib/apt/lists/*
-
- # (2-2) Optional vulkan support
- # vulkan-utils includes vulkan-smoketest, benchmark software of vulkan API
- RUN apt-get update && apt-get install -y --no-install-recommends \
- libvulkan1 vulkan-utils && \
- rm -rf /var/lib/apt/lists/*
-
- # for test
- RUN apt-get update && apt-get install -y --no-install-recommends \
- firefox openbox && \
- rm -rf /var/lib/apt/lists/*
-
- # sound driver and GTK library
- # ALSA系のエラーがでる時は、pulseaudioをインストールして
- # X起動後にpulseaudio --start でdaemonを開始させる。
- RUN apt-get update && apt-get install -y --no-install-recommends \
- alsa pulseaudio libgtk2.0-0 && \
- rm -rf /var/lib/apt/lists/*
-
- # novnc
- RUN wget https://github.com/novnc/noVNC/archive/v1.1.0.zip && \
- unzip -q v1.1.0.zip && \
- rm -rf v1.1.0.zip
-
- # (3) Run Xorg server + x11vnc + X applications
- # see run.sh for details
- COPY run.sh /run.sh
- CMD ["bash", "/run.sh"]