Divide and Conquer

Ubuntu 22.04의 Docker 컨테이너에 ROS2 Humble 설치 본문

2025/ROS

Ubuntu 22.04의 Docker 컨테이너에 ROS2 Humble 설치

10살 2024. 3. 14. 21:18
728x90

https://duvallee.tistory.com/25

ROS2는 우분투 버전의 영향이 크기 때문에 도커 이미지로 만들어서 구축하면 좋다고 한다

도커는 컨테이너 기반의 오픈소스로 가상화 플랫폼이다
> 기존의 가상환경 설정과는 어떤 점이 다른지 정리할 것


도커는 설치 스크립트로 설치한다

sudo apt install curl
curl -fsSL https://get.docker.com/ | sudo sh
sudo systemctl start docker
sudo systemctl enable docker

위의 명령어를 실행하면 재부팅하지 않아도 도커 서비스를 실행할 수 있다고 한다

sudo usermod -aG docker $USER     # 현재 접속중인 사용자에게 권한주기
sudo usermod -aG docker jinsunlee # jinsunlee 사용자에게 권한주기

도커는 루트 계정으로 실행해야 한다고 한다 
도커 그룹에 사용자를 추가하여 매번 sudo 권한을 주는 것을 피할 수 있다


https://docs.docker.com/get-started/03_updating_app/

컨테이너란... 무엇인지
도커에서의 이미지란

실행중인 컨테이너는 격리된 파일 시스템을 사용한다. 
격리된 파일시스템은 이미지에 의해 제공된다. 
해당 이미지에는 Application을 실행하는데 필요한 모든 것(모든 종속성, 구성, 스크립트, 바이너리 등)이 포함된다.

우선 애플리케이션을 실행하기 위해 애플리케이션의 소스코드를 복제한다

git clone https://github.com/Jinsun-Lee/getting-started-app

도커 이미지를 만들기 위해서는 Dockerfile이라는 도커 스크립트 파일을 만들어야 한다고 한다
= 이미지를 빌드하기 위해 Dockerfile을 사용한다
해당 파일은 확장자가 없는 텍스트 기반 파일이라고 한다

getting-started-app 폴더 안에 Dockerfile을 생성한다

cd getting-started-app/
touch Dockerfile
code Dockerfile

파일이 열리면 아래 내용을 추가한다

# syntax=docker/dockerfile:1

FROM node:18-alpine
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
EXPOSE 3000

파일을 저장하고 동일한 위치에서 아래 명령어를 실행해 이미지를 빌드한다
docker build <<< 새로운 이미지를 빌드하기 위함

docker build -t getting-started .

위의 명령어를 실행하면 Docker가 이미지를 다운로드하고, 
Dockerfile의 지침이 App에 복사되어 yarn 애플리케이션의 종속성을 설치한다고 한다 
-t 플래그는 이미지에 태그를 지정하는 것으로, 컨테이너 실행 시 getting-started라는 이름의 이미지를 참조할 수 있다
.는 Docker에게 현재 경로에서 docker build를 찾아야 한다고 알려준다고 한다


앱 컨테이너 시작하기 위해 docker run 명령을 실행한다

docker run -dp 127.0.0.1:3000:3000 getting-started

-d 플래그는 detach의 약어로 백그라운드에서 컨테이너를 실행하기 위함이다
컨테이너의 실행 여부를 확인하고 싶을 경우 아래 명령어를 실행하면 된다

docker ps

-p의 플래그는 publish의 약어로, 호스트와 컨테이너 간의 포트 매핑을 생성한다고 한다
위의 run 명령으로 3000의 컨테이너 포트를 호스트의 http://127.0.0.1:3000/에 게시한다

아래 웹 페이지를 열어 확인할 수 있다
http://localhost:3000


humble 설치 준비 

https://velog.io/@ed-_-b9/Docker%EC%99%80-ROS2%EC%9D%98-%EB%A7%8C%EB%82%A8

sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run hello-world

https://velog.io/@denver_almighty/Linux-Ubuntu-22.04-%EC%97%90-Docker-Desktop-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0%EC%B6%94%EA%B0%80%EC%84%A4%EC%B2%AD

DEB 패키지 다운로드 다운로드 링크

sudo apt install ./docker-desktop-4.11.0-amd64.deb

위의 명령어로 패키지를 설치할 수 있다

systemctl --user start docker-desktop
systemctl --user enable docker-desktop

docker-desktop을 실행하기 위해 위의 명령어를 실행한다

계정 확인 https://login.docker.com/u/login/identifier?state=hKFo2SBTNDIxdEZfRi1icHZHR2thX010UkV6aWh5T3RWcTZ4WqFur3VuaXZlcnNhbC1sb2dpbqN0aWTZIENUV296bFVjbTNzSkZxM0xOQ1NZcVJ6Y20tM21sdHNfo2NpZNkgbHZlOUdHbDhKdFNVcm5lUTFFVnVDMGxiakhkaTluYjk

gpg --generate-key
내 계정대로 입력

pub   AAAAAAA 2024-03-14 [SC] [expires: 2026-03-14]
      BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
uid                      Jinsun <DDDDDDDDD@gmail.com>
sub   CCCCCCCC 2024-03-14 [E] [expires: 2026-03-14]
pass init BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

docker desktop에서 로그인


Running ROS 2 nodes in Docker

docker pull osrf/ros:humble-desktop
docker run -it osrf/ros:humble-desktop

위의 명령어를 실행하니 root 계정으로 로그인이 된다

ros2 --help
ros2 pkg list
ros2 pkg executables

위의 명령어를 동일하게 사용할 수 있다

ros2 run demo_nodes_cpp listener &
ros2 run demo_nodes_cpp talker

이거 실행해서 잘 동작하는 것 확인했다

https://docs.ros.org/en/humble/How-To-Guides/Run-2-nodes-in-single-or-separate-docker-containers.html


이건 나중에 필요해질 수도

https://duvallee.tistory.com/25

https://velog.io/@ros_i/ROS2 

https://github.com/DominikN/ros2_docker_examples

https://with-rl.tistory.com/entry/Windows%EC%97%90%EC%84%9C-Docker%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-ROS2-Gazebo-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0


기본 설치도 Dockerfile에 넣자... 그전엔 걍 설치하지 머

apt update
apt install -y git

 

이어서

 

22.04 ROS2 Humble Docker에 Duckietown

바탕화면에 duckie_ws 폴더를 하나 생성하고 안에 Dockerfile을 위치시켰다 https://duvallee.tistory.com/25 더보기 ################################################################################ # # Copyright (C) 2023 # # Dockerfile fo

012vision.tistory.com

 

반응형
Comments