docker 에서 cuda, ros 사용하기

·2022년 5월 9일

1. Ubuntu 18.04 + cuda 이미지 도커에서 받아오기

출처: https://deepflowest.tistory.com/222?category=903390

docker pull nvidia/cuda:10.2-cudnn7-devel-ubuntu18.04

하고

내 노트북의 nvidia driver 랑 화면을 사용해 줄 것이기 때문에

#!/bin/sh

XSOCK=/tmp/.X11-unix
XAUTH=/tmp/.docker.xauth
touch $XAUTH
xauth nlist $DISPLAY | sed -e 's/^..../ffff/' | xauth -f $XAUTH nmerge -

docker run --runtime=nvidia --privileged --rm -it \
           --volume=$XSOCK:$XSOCK:rw \
           --volume=$XAUTH:$XAUTH:rw \
           --volume=$HOME:$HOME \
           --shm-size=1gb \
           --env="XAUTHORITY=${XAUTH}" \
           --env="DISPLAY=${DISPLAY}" \
           --env=TERM=xterm-256color \
           --env=QT_X11_NO_MITSHM=1 \
           --net=host \
           nvidia/cuda:10.2-cudnn7-devel-ubuntu18.04 \
           bash

이걸 sh 파일로 만들어서 써줄 것임 (shm-size 는 수정이 필요하지 않을까 싶긴한데 좀더 알아봐야 할듯)

2. 도커에 ROS Melodic 설치

위의 sh 파일로 도커 접속한 다음에

출처: https://ropiens.tistory.com/161

ROS melodic 관련 설정.

apt-get update
apt-get install lsb -y

sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
apt install curl # if you haven't already installed curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt-key add -
apt update
apt install ros-melodic-desktop-full

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

apt install python-rosdep
rosdep init
rosdep update

echo "alias cm='cd ~/catkin_ws && catkin_make'" >> ~/.bashrc
echo "eb='vim ~/.bashrc'" >> ~/.bashrc
echo "sb='source ~/.bashrc'" >> ~/.bashrc

3. vscode 도커에 설치

출처:

# after running the docker image
sudo apt install curl
sudo sh -c 'curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/microsoft.gpg'
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
sudo apt-get update
sudo apt-get upgrade

sudo apt install code
# Run code
code .

4. 유저 권한 부여

root 권한으로 실행하면 vscode 를 띄울 수가 없길래 킹받아서
그냥 auto_darknet 이라는 유저를 하나 만듬..

        echo "auto_darknet:auto_darknet" | chpasswd && \
        usermod --shell /bin/bash auto_darknet && \
        usermod -aG sudo auto_darknet && \
        mkdir /etc/sudoers.d && \ # 이미 만들어져 있으면 권한에러 뜰 수 있으므로 지우고 하자
        echo "auto_darknet ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/auto_darknet && \
        chmod 0440 /etc/sudoers.d/auto_darknet && \
        # Replace 1000 with your user/group id
        usermod  --uid 1000 auto_darknet && \
        groupmod --gid 1000 auto_darknet

근데 이렇게 하고 catkin 설정하고 얼씨구 절씨구 하니까 무슨 Permission denied 뜨면서 catkin_make 가 안된다길래

sudo chown -R auto_darknet:auto_darknet ~/catkin_ws

이거 추가하니까 잘 됨
그리고 비주얼 스튜디오 코드도 잘 뜬다 정상적으로... 행복해

그리고 위와 같이 수정을 다하고 나면, 도커 run 옵션으로는

#!/bin/sh

XSOCK=/tmp/.X11-unix
XAUTH=/tmp/.docker.xauth
touch $XAUTH
xauth nlist $DISPLAY | sed -e 's/^..../ffff/' | xauth -f $XAUTH nmerge -

docker run --runtime=nvidia --privileged --rm -it \
           --volume=$XSOCK:$XSOCK:rw \
           --volume=$XAUTH:$XAUTH:rw \
           --volume=$HOME:$HOME \
           --shm-size=8gb \
           --env="XAUTHORITY=${XAUTH}" \
           --env="DISPLAY=${DISPLAY}" \
           --env=TERM=xterm-256color \
           --env=QT_X11_NO_MITSHM=1 \
           --net=host \
           -u "auto_darknet"  \
           auto_darknet:latest \
           bash

이렇게 위와 같이 해주면 된다롱

5. 서버에서 접속시 자꾸 화면이 안뜨는 문제

xhost +local:docker
행복하다...

아윽 ... ㅠㅠㅠ

profile
._.

0개의 댓글