Repository navigation
Expand file tree
/
Copy pathDockerfile
More file actions
116 lines (99 loc) · 3.83 KB
/
Copy pathDockerfile
File metadata and controls
116 lines (99 loc) · 3.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# DECS CUDA/TensorFlow image template.
# Build variants are defined in image-variants.json and passed as build args.
ARG BASE_IMAGE=nvidia/cuda:12.5.1-cudnn-devel-ubuntu22.04
FROM ${BASE_IMAGE}
ARG BASE_IMAGE
ARG DECS_IMAGE_VARIANT=cuda12.5-tf2.20-ubuntu22.04
ARG CUDA_VERSION=12.5
ARG TENSORFLOW_VERSION=2.20.0
ARG TENSORFLOW_PACKAGE=tensorflow==2.20.0
ARG PYTHON_VERSION=3.10
ARG UBUNTU_VERSION=22.04
ARG MIN_NVIDIA_DRIVER=555.42.06
ARG MINIFORGE_VERSION=25.3.1-0
ARG CONDA_VERSION=26.3.2
ARG CONDA_PACKAGES="ipywidgets jupyterlab jupyter_client<8.9 micromamba notebook pip"
LABEL org.opencontainers.image.base.name="${BASE_IMAGE}" \
ai.dgu.decs.variant="${DECS_IMAGE_VARIANT}" \
ai.dgu.decs.cuda="${CUDA_VERSION}" \
ai.dgu.decs.tensorflow="${TENSORFLOW_VERSION}" \
ai.dgu.decs.python="${PYTHON_VERSION}" \
ai.dgu.decs.ubuntu="${UBUNTU_VERSION}" \
ai.dgu.decs.min_nvidia_driver="${MIN_NVIDIA_DRIVER}"
ENV DEBIAN_FRONTEND=noninteractive \
CONDA_DIR=/opt/conda \
DECS_IMAGE_VARIANT="${DECS_IMAGE_VARIANT}" \
DECS_CUDA_VERSION="${CUDA_VERSION}" \
DECS_TENSORFLOW_VERSION="${TENSORFLOW_VERSION}" \
DECS_PYTHON_VERSION="${PYTHON_VERSION}" \
DECS_MIN_NVIDIA_DRIVER="${MIN_NVIDIA_DRIVER}" \
SUDOER_ID=svmanager \
SUDOER_PW=decs2260 \
SUDOER_DIR=/svmanager \
SSHD_CONFIG_PATH=/etc/ssh/sshd_config
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN apt-get clean \
&& apt-get update \
&& apt-get install -y --no-install-recommends \
acl \
auditd \
ca-certificates \
curl \
dbus-x11 \
fcitx-hangul \
fonts-nanum \
fonts-nanum-coding \
fonts-nanum-extra \
gnupg \
krb5-user \
net-tools \
novnc \
openssh-server \
software-properties-common \
sudo \
tigervnc-common \
tigervnc-standalone-server \
update-motd \
vim \
websockify \
wget \
xfce4 \
xfce4-terminal \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir -p "$SUDOER_DIR" /home/decs /run/sshd \
&& useradd -s /bin/bash -d "$SUDOER_DIR" -G sudo "$SUDOER_ID" \
&& echo "$SUDOER_ID ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers \
&& cp -R /etc/skel/. "$SUDOER_DIR" \
&& echo "$SUDOER_ID:$SUDOER_PW" | chpasswd
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
&& echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list \
&& apt-get update \
&& apt-get install -y --no-install-recommends google-chrome-stable \
&& rm -rf /var/lib/apt/lists/*
RUN printf 'LANG="ko_KR.UTF-8"\nLANGUAGE="ko_KR:ko:en_GB:en"\n' >> /etc/environment \
&& fc-cache -r
RUN wget -q "https://github.com/conda-forge/miniforge/releases/download/${MINIFORGE_VERSION}/Miniforge3-Linux-x86_64.sh" \
&& bash Miniforge3-Linux-x86_64.sh -b -p "$CONDA_DIR" \
&& rm Miniforge3-Linux-x86_64.sh
ENV PATH=/opt/conda/bin:$PATH
RUN conda config --system --set channel_priority strict \
&& conda config --system --add channels conda-forge \
&& conda install -n base -y \
"python=${PYTHON_VERSION}" \
"conda=${CONDA_VERSION}" \
${CONDA_PACKAGES} \
&& conda clean -afy \
&& conda init bash \
&& python -m pip install --no-cache-dir --upgrade pip \
&& python -m pip install --no-cache-dir "${TENSORFLOW_PACKAGE}"
RUN apt-get update \
&& apt-get install -y --no-install-recommends tigervnc-tools \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir -p /jupyter_config \
&& touch /jupyter_config/jupyter_notebook_config.py
COPY entrypoint.sh /
COPY decs-chrome /usr/local/bin/decs-chrome
# noVNC listens on 6080. The TigerVNC server binds to localhost only.
EXPOSE 6080
RUN chmod +x /entrypoint.sh /usr/local/bin/decs-chrome
ENTRYPOINT ["bash", "/entrypoint.sh"]