Docker cuộc đua số
Môi trường mẫu để cho các đội tham gia cuộc đua số có thể sử dụng. Các image được xây dựng chỉ chứa những môi trường cơ bản, các đội tham gia cần cài đặt thêm một số thư viện cho phù hợp với phần thi của đội mình
I. Các tag được hỗ trợ và Dockerfile
tương ứng.
- ros (image này chỉ chứa ros-melodic)
- ros-cuda (image này có ros-melodic và cuda 10.0, cudnn 7)
- ros-python (image này có ros và python3, ros kế thừa từ tag
ros
) - ros-python-tensorflow (image này có ros, python3, tensorflow cho python image này kế thừa từ tag
ros-cuda
) - ros-python2-tensorflow (image này có ros, python2, tensorflow cho python image này kế thừa từ tag
ros-cuda
)
Cấu trúc thư mục được mô tả như hình sau:
<team-name>
├── Dockerfile
├── README.md
\── src
Là file để có thể build lên thành 1 image docker.
Trong Dockerfile
của các đội tham gia buộc phải FROM
từ docker hub của BTC,
trường hợp nếu đội thi cần thêm những image khác thì có thể viết một Dockerfile mới
và gửi để mình có thể đẩy lên docker hub cho các bạn.
File này các đội cần ghi rõ hướng dẫn chạy cho BTC.
vd: chạy file này trước chờ tới khi xuất hiện thông báo abc.xyz gì đấy thì code đã sẵn sàng để chạy.
Thư mục chứa toàn bộ source code của các đội.
$ docker build -t <image-name> .
- chạy docker image không sử dụng gpu:
$ docker run --rm -it --network=host -v <đường dẫn đến thư mục src ở trên>:/catkin_ws/src --name <team-name> <image-name> bash
- chạy docker image sử dụng gpu:
$ docker run --rm -it --gpus=all --network=host -v <đường dẫn đến thư mục src ở trên>:/catkin_ws/src --name <team-name> <image-name> bash
Lúc này bạn đã được đưa vào container luôn và có thể sử dụng terminal bình thường.
- Cách để truy cập 1 container đang chạy
$ docker exec -it <contaier-name> bash
- Hai tag
ros
vàros-cuda
là các image cơ bản, chỉ có các thư viện cơ bản như ros và cuda
- Các đội bắt buộc phải `FROM` từ image của BTC rồi tự xây dựng thành image của đội mình
- Cần file README hướng dẫn chỉ nhằm mục đính thông báo cho BTC code chạy ntn thì sẽ sẵn sàng, các đội cần viết launch file
để btc có thể chạy theo cú pháp
$ roslaunch team-name team-name.launch
- option
-v
trong lệnh chạy container là để mount file vào, các đội có thể sử dụngCOPY
từ trongDockerfile
cũng được chấp nhận.