직관적인느낌

Docker 컨테이너에서 설치한 패키지 및 라이브러리 – 자세한 정리 본문

공학/시스템 설치 및 설정

Docker 컨테이너에서 설치한 패키지 및 라이브러리 – 자세한 정리

범슐랭 2025. 2. 21. 08:15
728x90
반응형

Docker 컨테이너 안에 개발 환경을 구성할 때, 기본 유틸리티부터 GUI 실행, 네트워크, SLAM/ROS, 영상 처리, 디버깅 툴까지 필요한 패키지가 많습니다.
이번 포스트에서는 Docker 컨테이너 안에 어떤 패키지를 설치해야 하는지, 왜 필요한지, 어떻게 실행하는지를 단계별로 자세히 정리합니다.





1️⃣ 기본 유틸리티 및 필수 패키지

목적: 개발 및 운영에 필요한 최소한의 환경을 구성

sudo apt update
sudo apt install -y \
  sudo \
  vim \
  git \
  curl \
  wget \
  unzip \
  tar \
  xz-utils \
  build-essential \
  cmake \
  pkg-config \
  net-tools \
  iproute2

sudo: 관리자 권한 실행

vim: 텍스트 편집기

git: 소스 코드 버전 관리

curl, wget: 파일/패키지 다운로드

unzip, tar, xz-utils: 각종 압축 해제 도구

build-essential: C/C++ 컴파일러(gcc, g++) 등 기본 개발 툴

cmake, pkg-config: CMake 기반 프로젝트 빌드, 의존성 확인

net-tools, iproute2: 네트워크 설정 및 상태 확인(ifconfig, ip a 등)


> 추천 실행 예시

# CMake 버전 확인
cmake --version
# Git으로 소스 코드 내려받기
git clone <레포지토리 주소>







2️⃣ GUI 환경 (X11) 및 데스크탑 설정

목적: Docker 컨테이너 안에서 GUI 프로그램(Nautilus, 브라우저 등)을 실행 가능하도록 설정

sudo apt install -y \
  x11-xserver-utils \
  x11-apps \
  nautilus \
  xfce4 xfce4-goodies \
  qt5-default \
  libxcb1 libx11-xcb1 \
  libfontconfig1 libxrender1 \
  libxkbcommon-x11-0 libxkbcommon0

x11-xserver-utils: xhost 명령어를 비롯한 X 서버 관련 유틸리티

x11-apps: xclock 등 X11 테스트 앱

nautilus: GNOME 파일 탐색기

xfce4, xfce4-goodies: 가볍고 빠른 Xfce 데스크탑 환경

qt5-default, libxcb1: Qt 기반 GUI 프로그램 실행에 필요한 라이브러리


X11 포워딩 실행 방법

1. 호스트에서 X 서버 접근 허용:

xhost +local:root


2. Docker 컨테이너 실행 (X11 소켓 공유, 네트워크 호스트 사용, 등):

docker run -it --name my_docker_gui \
    --network host \
    --privileged \
    -e DISPLAY=$DISPLAY \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    ubuntu_slamnav2_v3 bash


3. 컨테이너 내부에서 GUI 프로그램 실행:

export DISPLAY=:0
nautilus  # GNOME 파일 탐색기



> 추가 설치: KDE 환경을 쓰고 싶다면 sudo apt install -y kde-plasma-desktop 등으로 선택 가능







3️⃣ 네트워크 및 장치 접근

목적: 컨테이너 내부에서도 호스트의 네트워크 인터페이스(Wi-Fi, 유선 LAN 등)를 사용하기

sudo apt install -y \
  wireless-tools \
  wpasupplicant \
  network-manager

wireless-tools: 무선 랜 설정 (iwconfig)

wpasupplicant: WPA/WPA2 인증 지원

network-manager: 유/무선 네트워크 관리


네트워크 장치 확인

ip a          # 또는 ifconfig -a
iwconfig      # 무선 랜 확인

중요: 호스트 네트워크 인터페이스를 그대로 쓰려면 --network host --privileged 옵션을 주고 컨테이너를 실행해야 함.






4️⃣ SLAM 및 ROS 관련 패키지

목적: 로봇 운영체제(ROS) 환경에서 SLAM 알고리즘을 실행하고, RViz 등 툴을 사용하기

sudo apt install -y \
  ros-noetic-desktop-full \
  ros-noetic-navigation \
  ros-noetic-slam-gmapping \
  ros-noetic-rviz \
  ros-noetic-tf \
  ros-noetic-tf2 \
  ros-noetic-roscpp \
  ros-noetic-std-msgs

ros-noetic-desktop-full: ROS Noetic의 전체 패키지 (RViz, rqt 등 포함)

ros-noetic-navigation: 로봇 내비게이션 스택

ros-noetic-slam-gmapping: SLAM 알고리즘(gmapping)

tf, tf2: 좌표 변환 라이브러리

ros-noetic-roscpp, std-msgs: ROS 메시지, C++ API


ROS 실행

source /opt/ros/noetic/setup.bash
roscore
rosrun rviz rviz






5️⃣ 디버깅 및 성능 분석 도구

목적: Docker 컨테이너 내부에서 개발/운영 시 발생하는 오류나 성능 문제를 분석하기

sudo apt install -y \
  gdb \
  valgrind \
  ltrace \
  strace \
  htop \
  glxinfo \
  mesa-utils

gdb: GNU 디버거 (C/C++ 애플리케이션 디버깅)

valgrind: 메모리 누수, 힙 오류 검출

ltrace, strace: 라이브러리/시스템 호출 추적

htop: 실시간 CPU/메모리 모니터링

glxinfo, mesa-utils: OpenGL, GPU 상태 확인


디버깅 예시

gdb ./SLAMNAV2
run
bt






6️⃣ 영상 처리 & 컴퓨터 비전

목적: 비디오 스트리밍(웹캠, IP 카메라) 및 OpenCV 활용

sudo apt install -y \
  ffmpeg \
  v4l-utils \
  libopencv-dev \
  python3-opencv

ffmpeg: 비디오/오디오 인코딩 및 디코딩 라이브러리

v4l-utils: Video4Linux2 장치 제어(v4l2-ctl)

libopencv-dev, python3-opencv: C++ 또는 파이썬에서 OpenCV 사용 가능


웹캠 영상 테스트

v4l2-ctl --list-devices
ffmpeg -f v4l2 -i /dev/video0 -vframes 1 test.jpg






7️⃣ 추가로 설치한 패키지

sudo apt install -y \
  mesa-utils-extra \
  software-properties-common \
  python3-pip \
  qtbase5-dev \
  qttools5-dev-tools

mesa-utils-extra: 추가 OpenGL/드라이버 정보 툴

software-properties-common: PPA 관리 유틸리티

python3-pip: 파이썬 패키지 관리자 (pip)

qtbase5-dev, qttools5-dev-tools: Qt5 개발 툴




🔥 마무리: 패키지 목록 백업 & 복원

1. 설치된 패키지 목록 확인

dpkg --get-selections | grep -v deinstall

2. 목록을 파일로 저장

dpkg --get-selections > installed_packages.txt

3. 다른 환경에서 동일하게 설치

sudo dpkg --set-selections < installed_packages.txt
sudo apt-get dselect-upgrade -y

이 과정을 통해 동일한 Docker 컨테이너 환경을 쉽게 재현할 수 있습니다.





✨ 결론

1. 기본 개발 환경 – vim, git, build-essential, cmake


2. GUI/X11 – x11-xserver-utils, xfce4, nautilus


3. 네트워크 관리 – wireless-tools, network-manager


4. SLAM/ROS – ros-noetic-desktop-full, gmapping, rviz


5. 디버깅 – gdb, valgrind, strace, htop


6. 컴퓨터 비전 – ffmpeg, v4l-utils, libopencv-dev



위 패키지들을 조합하여 Docker 컨테이너 내부에서도 완전한 GUI 환경과 로보틱스/비전 개발 환경을 구성할 수 있습니다.
이 포스트를 참고하면, 비슷한 환경이 필요한 경우 간편하게 패키지를 설치하고 재현할 수 있을 것입니다!

728x90
반응형