Docker
Docker란 리눅스 컨테이너에서 리눅스 어플리케이션을 프로세스 격리기술을 사용하여 더 쉽게 컨테이너로 실행하고 관리할 수 있게 해주는 오픈소스 프로젝트다.
더 자세한 설명은 도커 개념 정리해주는 곳에서 매우 상세하게 설명해준다.
처음 이해를 할 때, 이 분의 글을 세 번 정도 정독한다면 이해도가 상승할 것이다.
그러나 백문불여일견, 나는 글을 읽어도 잘 이해가 가질 않았다.
(그건 필자가 멍청해서 그런 걸 수도 있다.)
필자가 처음 Docker를 접하게 된 계기는 라즈베리파이 5를 접하게 되면서였다.
(20만원이나 주고 산 거액의 라즈베리파이)
이번 라즈베리파이의 디자인은 정말 환상적으로 뽑혔다. 실제로 받아보니 너무 깔끔하고 아름다운 디자인에 반했다.
물론, 문제점은 있었다. 이전에 사용하던 라즈베리파이 3B+는 HDMI port를 사용하는 데 반해, 라즈베리파이 4 이후부터는 Micro HDMI port를 사용한다는 것이었다.
그래서 Micro HDMI port가 배달올 때까지는 숨참고 대기했고, 배달이 왔을 때 Ubuntu 22.04를 깔려다가 충격을 먹었다.

(아니 세상에, 22.04LTS를 지원하지 않는다고?)
ROS 교육에서도 이야기했지만, Ros는 Ubuntu LTS 버전만을 지원한다.
구글링을 열심히 해본 결과, 방법이 없다. 라는 결론이 나왔다.
“Docker를 사용하는 것 말고는…”
그 때부터, 필자는 Docker 공부를 하기 시작했다.
Helpful Sites
당연히, Docker을 설치해야만 Docker 공부를 시작할 수 있다.
Docker에 대한 개념 이해가 너무 어려워서, 위 개념 정리 사이트를 포함해서 유튜브를 약 10개 가량 본거 같다.
그 중에서, 내가 보았던 Docker 유튜브 영상들을 몇 개 소개해 주고자 한다.
위 영상을 보면 23분짜리 도커 관련 기초 영상이 나온다.
유튜브에 검색하면 가장 상단에 뜨는 영상으로, 비전공자도 이해할 수 있게 설명해준다.
그러나, 이는 이론적인 내용이 담겨 있지만 실습하기 어려운 내용이 담겨 있어 맥락만 이해했다.
처음 이 영상을 접했을 때에는 Option과 관련된 내용보다는 단순히 이해하기 위함이었는데,
실제로 영상에서 설명해주고 있는 내용들을 보면 작동하는 과정과 원리를 쉽게 이해할 수 있다.
Docker 환경에서 Ros를 실제로 사용하는 방법을 알려준다.
이 순서대로 따라가면 Ros 환경을 돌릴 수 있다.
큰 도움이 되니 참고하면 좋겠다.
- tmux에 관한 내용
- X11 Forwarding에 대한 내용.(반드시 수행해야하는 사항)
- 이미지를 Pull해오는 과정
- Option이 가지는 의미
- GUI app Rendering Check
위 사이트에서 상당히 친절하게 설명되어 있으니 이해하길 바란다.
여기까지 봤다면, 이제 기초적인 내용에 대해서 볼 필요가 있었다.
사실 본 필자가 조금 멍청하게 공부하는 방식이긴 하다.
개념적인 부분을 처음에 대충 보고, 이해가 가지 않으니 구글링을 통해 실제 작동을 확인하며 이해한다.
그리고 다시 돌아와 개념을 확인하는 방식으로 정보를 습득하는데, 이제 저 기본을 보면 완벽히 이해가 간다.
그렇게 Docker 개념 및 작동 방식 원리를 확인했으니, 이제 제대로 Ros를 사용해볼 차례다.
이전 Setup 사이트와 함께 사용한다.
그러나 위 사이트를 이용할 때 알아두어야 할 점이 있다.
필자는 위 사이트를 이용하다가 의아한 점이 있었는데,
Architecture가 amd64에 맞춰져 있는 humble 버전 Ros였다.
한마디로, Mac, RaspberryPI에는 적합하게 setup이 되어있지 않아 있었다.
Docker의 사기점, 이대로 사라지나? 라는 생각이 처음 들었다. Docker의 최고 장점은 Pre-setup된 Image를 사용하는 것.
그리고 그걸 Commit해가며 내 맘대로 Custom하고 Pre-Setup을 박제해 둘 수도 있다는 장점이 있었다.
근데 Ros부터 전부 Setup하는 과정을 밟아야 하는데, amd64만 가능한 것이라면?
다행히도 이 생각은 틀린 생각이었고, osrf(open source robotics foundation)은 amd64 tag에 대해서 올려놓았다. arm64 tag는 찾다보면 바로 찾을 수 있다.
exec user process caused “exec format error” 에러 해결법
Buildx를 이용해도 좋고, arm64형 image를 다운받아도 좋다.
그렇게 실행시킨다면, Ros실행 및 GUI Check를 진행할 준비가 된 것이다.
이 setup까지 완료된다면, 문제 없다.
물론, 본 필자는 여기서 Display Error가 발생했고, 이를 해결하기 여러 방안을 찾아보았다.
(Display를 Export한 상황임에도 Scan이 불가능한 상황.)
다음 포스팅에는 Docker Setup을 완료한 이후, 실제 사용에 관해 다뤄보겠다. 그러나 실제 사용에 관한 내용은 대부분 Ros에 연결되어 있으니, Ros로 갈 수도 있겠다.