-
Notifications
You must be signed in to change notification settings - Fork 1
/
Dockerfile.CUDA
168 lines (144 loc) · 4.67 KB
/
Dockerfile.CUDA
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
# syntax=docker/dockerfile:1.0.0-experimental
###########################################
# Base image
###########################################
FROM nvidia/cuda:11.7.1-devel-ubuntu22.04 AS base
ENV DEBIAN_FRONTEND=noninteractive
# Install language
RUN apt-get update && apt-get install -y \
locales \
&& locale-gen en_US.UTF-8 \
&& update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 \
&& rm -rf /var/lib/apt/lists/*
ENV LANG en_US.UTF-8
# Install timezone
RUN ln -fs /usr/share/zoneinfo/UTC /etc/localtime \
&& export DEBIAN_FRONTEND=noninteractive \
&& apt-get update \
&& apt-get install -y tzdata \
&& dpkg-reconfigure --frontend noninteractive tzdata \
&& rm -rf /var/lib/apt/lists/*
# Install ROS2
RUN apt-get update && apt-get install -y \
curl \
gnupg2 \
lsb-release \
sudo \
&& curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/ros2.list > /dev/null \
&& apt-get update && apt-get install -y \
ros-humble-ros-base \
python3-argcomplete \
&& rm -rf /var/lib/apt/lists/*
ENV ROS_DISTRO=humble \
AMENT_PREFIX_PATH=/opt/ros/humble \
COLCON_PREFIX_PATH=/opt/ros/humble \
LD_LIBRARY_PATH=/opt/ros/humble/lib \
PATH=/opt/ros/humble/bin:$PATH \
PYTHONPATH=/opt/ros/humble/lib/python3.10/site-packages \
ROS_PYTHON_VERSION=3 \
ROS_VERSION=2
ENV DEBIAN_FRONTEND=
###########################################
# Develop image
###########################################
FROM base AS dev
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
bash-completion \
build-essential \
cmake \
gdb \
git \
python3-argcomplete \
python3-colcon-common-extensions \
python3-pip \
python3-rosdep \
python3-vcstool \
vim \
wget \
python3-autopep8 \
&& rm -rf /var/lib/apt/lists/* \
&& rosdep init || echo "rosdep already initialized"
###########################################
# Full image
###########################################
FROM dev AS full
ENV DEBIAN_FRONTEND=noninteractive
# Install the full release
RUN apt-get update && apt-get install -y \
ros-humble-desktop \
ros-humble-ament-lint \
ros-humble-launch-testing \
ros-humble-launch-testing-ament-cmake \
ros-humble-launch-testing-ros \
ros-humble-rmw-cyclonedds-cpp \
ros-humble-ament-clang-format \
ros-humble-librealsense2* -y \
ros-humble-realsense2-* -y \
&& rm -rf /var/lib/apt/lists/* \
&& pip install colcon-mixin \
&& colcon mixin add default https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml \
&& colcon mixin update default
ENV DEBIAN_FRONTEND=
###########################################
# Full+Gazebo image
###########################################
FROM full AS gazebo
ENV DEBIAN_FRONTEND=noninteractive
# Install gazebo
RUN apt-get update && apt-get install -y \
ros-humble-gazebo* \
&& rm -rf /var/lib/apt/lists/*
ENV DEBIAN_FRONTEND=
###########################################
# Full+Gazebo+Nvidia image
###########################################
FROM gazebo AS gazebo-nvidia
################
# Expose the nvidia driver to allow opengl
# Dependencies for glvnd and X11.
################
RUN apt-get update \
&& apt-get install -y -qq --no-install-recommends \
libglvnd0 \
libgl1 \
libglx0 \
libegl1 \
libxext6 \
libx11-6 \
python3-vcstool \
git \
software-properties-common \
libceres-dev \
nlohmann-json3-dev
# DL/Nvidia dependencies
RUN apt-get install build-essential g++ gcc -y
RUN apt-get install libgl1-mesa-glx libglib2.0-0 -y
RUN apt-get install openmpi-bin openmpi-common libopenmpi-dev libgtk2.0-dev -y
# Install python libraries for DL
RUN pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
RUN pip install Pillow
RUN pip install tqdm
RUN pip install torchpack
RUN pip install numba
RUN pip install opencv-python
RUN pip install pandas
# Jupyter Notebook
RUN pip install notebook ipykernel
RUN pip install matplotlib
# Install packages to make ros_build work
RUN pip install empy catkin-pkg lark
# Env vars for the nvidia-container-runtime.
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES graphics,utility,compute
ENV QT_X11_NO_MITSHM 1
ENV HOME /home/mines
WORKDIR "/home/mines/mines_ws"
ENV DISPLAY=host.docker.internal:0.0
#RUN useradd -m -s /bin/bash mines
CMD ["/bin/bash"]
# need to have sudo access so we can change permissions to allow for devcontainers
#RUN usermod -aG sudo mines
#RUN echo 'mines:qw21QW@!' | chpasswd
#USER mines