docker

ros2 humble

정지홍 2025. 4. 25. 16:31

0. 사전 준비

  • docker --version ( 도커의 버전 확인 )
    • 출력 : Docker version 28.1.1, build 4eba377
  • docker info | grep "Operating System" ( docker가 wsl과 잘 연동 되었는지 확인 )
    •  출력 : Operating System: Ubuntu 24.04.2 LTS

 

1. ros2 humble 컨테이너 실행

  • -d : detached mode를 의미. 즉, 백그라운드로 실행
  • -i : interactive를 의미. 즉,사용자 입력을 받음
  • -t : tty 가상터미널 설정
  • -a : attach. 즉, 출력연결
  • --name : 컨테이너의 이름을 지정
  • --network host : ros2의 dds통신을 위해서 host네트워크 사용
  • ros:humble : docker hub의 공식 ros2 humble 이미지
  • bash : 쉘로 진입
sudo docker run -dit --name humbleRos2 --network host ros:humble bash

sudo docker start -ai humbleRos2

 

 

2. source하기

source /opt/ros/humble/setup.bash

#필요시.....
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

 

 

3. 예제를 위해서 다음과 같이 입력

apt update
apt install -y ros-humble-demo-nodes-cpp ros-humble-demo-nodes-py


source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp talker

 

 

4. 다른 터미널에서 다음과 같이 입력

docker exec -it ros2_humble_test bash

source /opt/ros/humble/setup.bash

ros2 run demo_nodes_py listener

 

 

 


 

1. 마운트 한 상태에서 컨테이너 생성 ( -v 내_디렉토리:마운트시킬곳 )

sudo docker run -dit --name humbleRos2_mount --network host -v ~/ros2_ws:/root/ros2_ws ros:humble bash

 


1. gz sim install

# 1) 필수 툴 설치
apt update
apt install -y wget gnupg2 lsb-release

# 2) OSRF GPG 키 가져오기
wget https://packages.osrfoundation.org/gazebo.gpg \
     -O /usr/share/keyrings/osrf-archive-keyring.gpg

# 3) apt 소스 리스트 추가
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/osrf-archive-keyring.gpg] \
      http://packages.osrfoundation.org/gazebo/ubuntu-stable \
      $(lsb_release -cs) main" \
  > /etc/apt/sources.list.d/gazebo-stable.list

# 4) 패키지 인덱스 갱신
apt update





apt install -y ros-humble-ros-gzharmonic



echo "export GZ_VERSION=harmonic" >> ~/.bashrc
source ~/.bashrc

 

 


dockerfile

# ──────────────────────────────────────────────────────
FROM ros:humble

# 1) 시스템 의존성 & OSRF Gazebo 리포지토리 등록
RUN apt-get update && apt-get install -y \
    wget gnupg2 lsb-release curl \
    python3-colcon-common-extensions \
  && wget https://packages.osrfoundation.org/gazebo.gpg \
        -O /usr/share/keyrings/osrf-archive-keyring.gpg \
  && echo "deb [arch=$(dpkg --print-architecture) \
      signed-by=/usr/share/keyrings/osrf-archive-keyring.gpg] \
      http://packages.osrfoundation.org/gazebo/ubuntu-stable \
      $(lsb_release -cs) main" \
     > /etc/apt/sources.list.d/gazebo-stable.list \
  && apt-get update

# 2) Gazebo Harmonic 브리지 설치
RUN apt-get install -y \
    ros-humble-ros-gzharmonic \
  && rm -rf /var/lib/apt/lists/*

# 3) 기본 환경변수 설정
RUN echo "source /opt/ros/humble/setup.bash" >> /root/.bashrc \
  && echo "export GZ_VERSION=harmonic"        >> /root/.bashrc

ENTRYPOINT ["/bin/bash", "-lc", "exec bash"]
# ──────────────────────────────────────────────────────






# 2. docker build -t ros2-humble-gzharmonic:latest .
# 3. sudo apt install -y x11-xserver-utils
# xhost +local:docker
# 4. docker run -it --rm \
  --gpus all \
  --device /dev/dri \
  --name humbleSim \
  --network host \
  -e DISPLAY=$DISPLAY \
  -e QT_X11_NO_MITSHM=1 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v ~/ros2_ws:/root/ros2_ws \
  ros2-humble-gzharmonic:latest

 

 


ndivia

distribution=ubuntu22.04  # 강제로 22.04로 설정 (24.04용은 아직 없음)

# GPG 키 등록
curl -fsSL https://nvidia.github.io/nvidia-docker/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

# 저장소 등록
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list \
  | sed 's|^deb |deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] |' \
  | sudo tee /etc/apt/sources.list.d/nvidia-docker.list > /dev/null



sudo apt update
sudo apt install -y nvidia-container-toolkit

sudo apt update
sudo apt install -y \
  apt-transport-https \
  ca-certificates \
  curl \
  gnupg \
  lsb-release


distribution=ubuntu22.04
curl -s -L https://nvidia.github.io/libnvidia-container/stable/$distribution/libnvidia-container.list \
  | sed 's#deb #deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] #' \
  | sudo tee /etc/apt/sources.list.d/libnvidia-container.list

curl -s -L https://nvidia.github.io/nvidia-container-runtime/stable/$distribution/nvidia-container-runtime.list \
  | sed 's#deb #deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] #' \
  | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list

curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list \
  | sed 's#deb #deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] #' \
  | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

sudo apt update
sudo apt install -y \
  nvidia-docker2 \
  nvidia-container-toolkit



sudo systemctl restart docker

docker run --rm --gpus all \
  nvidia/cuda:11.8.0-base-ubuntu22.04 \
  nvidia-smi