일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- ROS
- WSL2
- ROS2
- DevOps
- 터틀심
- 티스토리챌린지
- ZED2
- U-blox
- 로봇
- C++
- Visual SLAM
- Jetson
- SLAM
- WSL
- GPS
- turtlesim
- 강화학습
- 오블완
- Simulation
- QT
- Puck LITE
- GUI
- 자율탐사
- Gazebo
- turtlebot3
- 인공지능
- RTK
- ubuntu
- 젯슨
- 자율주행
- Today
- Total
직관적인느낌
Docker 컨테이너에서 설치한 패키지 및 라이브러리 – 자세한 정리 본문
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 환경과 로보틱스/비전 개발 환경을 구성할 수 있습니다.
이 포스트를 참고하면, 비슷한 환경이 필요한 경우 간편하게 패키지를 설치하고 재현할 수 있을 것입니다!
'공학 > 시스템 설치 및 설정' 카테고리의 다른 글
Docker 명령어 정리 – 실전 가이드 (0) | 2025.02.20 |
---|---|
Docker를 활용한 SLAMNAV2 환경 구축 및 이미지 관리 방법 (0) | 2025.02.20 |
DevOps 로드맵 (feat. DevOps 어떻게 시작할까?) - 1편 (0) | 2025.02.20 |
Conan 설치 가이드 (0) | 2025.02.19 |
로봇환경에 DevOps 도입하기 (0) | 2025.02.18 |