일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- nav2 dev contatiner
- CODEUP 6073
- ros2 remapping
- Nav2 document
- development guides
- nav2 first-time robot setup guide
- ros2 foxy docker
- nav2 development guides
- ros2 foxy tutorial
- Foxy tutorial
- ros2 튜토리얼 환경설정
- docker foxy
- foxy nav2
- ros2 튜토리얼
- first-time robot setup guide
- ros2 development guides
- nav2 getting started
- error
- ROS FOXY 튜토리얼
- ros2 configuring environment
- ros2 환경설정
- nav2 development guides
- nav2 tutorial
- Python
- nav2 튜토리얼
- humble development guides
- 코드업
- CodeUp
- nav2 설치
- humble 환경설정
- Today
- Total
BAN2ARU
[Humble/Nav2] 튜토리얼 2. Development Guides - 2) Dev Containers 본문
Nav2 튜토리얼은 공식 홈페이지를 참조하여 작성함
이번 튜토리얼은 Dev Containers를 왜 써야하는지에 대한 설명 위주로 스킵하고 싶은 분들은 스킵하셔도 됩니다!
프로젝트를 빌드할 때 Dev container를 사용하면 유용하다. 만약 팀 작업을 Dev containers를 활용한다면 팀의 다른 구성원들과 동일한 도구와 dependency를 사용할 수 있도록 해준다. 또한 호스트 머신에 직접 개발도구나 라이브러리를 설치할 필요가 없어 환경설정이 보다 간단해지고 충돌을 피할 수 있다.
Dev container를 사용하면 Github codespace와 같은 원격 환경에서도 동일한 성정을 사용할 수 있다. 따라서 Dev container를 사용하면 개발 환경의 설정, 관리, 그리고 팀 간의 협업이 모두 효율적으로 이루어질 수 있다.
What, Why, How?
What is a Dev Container?
Dev container는 프로젝트 개발에 필요한 모든 도구와 dependency를 포함한 docker 컨테이너이다. Docker 컨테이너는 자체적으로 독립된 환경에서 실행되므로, 다른 컨테이너나 호스트 머신으로부터 격리되어 있다. 따라서 개발시에 모든 개발자가 동일한 컨테이너 환경에서 작업할 수 있어, 환경 차이로 인한 오류를 줄이고 개발 과정이 더 일관되게 유지할수 있다. 특히 ROS와 같은 특정 리눅스 배포판을 목표로하는 프로젝트의 경우에는 Dev 컨테이너를 사용하면 호스트 머신의 운영 체제가 다르더라도 리눅스 환경에서의 개발이 가능해진다.
Why use a Dev Container?
그렇다면 Dev container는 왜 사용해야할까?
- 일관된 개발 환경 제공
- Dev container는 모든 팀원이 동일한 개발 환경에서 작업할 수 있도록 보장함
- 프로젝트 간 전환 용이
- Dev container를 사용하면 각 프로젝트마다 다른 컨테이너를 사용할 수 있기 때문에 프로젝트간의 전환이 매우 간편해짐
- 여러 버전 관리 가능
- Dev container는 같은 도구의 여러 버전을 사용하는 경우 특히 유용함. 예를 들어, 서로 다른 프로젝트에서 ROS의 다른 버전을 사용해야할 때, 각 버전에 맞는 컨테이너를 만들어 사용함으로써 버전 충돌 없이 개발을 진행할 수 있음
How do Dev Containers work?
프로젝트 개발을 위해 도커 컨테이너를 VS Code와 통합할 수 있음. 통합 방법은 다음과 같음
- 프로젝트 열기
- VS Code에서 프로젝트를 열면 .devcontainer 폴더에 dev container 설정이 있는지 확인함
- 해당 설정 파일에는 컨테이너가 어떻게 설정되고 어떠한 도구와 library가 포함되어야 하는지에 대한 정보가 들어있음
- 컨테이너 실행
- Dev 컨테이너 설정을 발견하면, VS Code는 프로젝트를 컨테이너에서 열도록 제안함.
- 사용자가 동의하면, VS Code는 도커 컨테이너를 실행한 후 해당 컨테이너에 프로젝트 폴더를 마운트함
- VS Code 사용
- 컨테이너가 실행되고나면, 사용자는 로컬 환경에서 VS Code를 사용하는 것과 거의 동일하게 작업할 수 있음
- 컨테이너에서 작업하므로 개발 환경이 로컬 환경과 완전히 격리되어 있지만, VS CODE는 로컬 환경의 git 설정이나 x11 소켓과 같은 유용한 설정을 컨테이너로 전달할려고 시도함. (컨테이너 설정에서 설정할 수 있음)
이를 위해서는 다음과 같은 요구사항이 있음
- Docker Engine
- 원격 머신에 설치된 VS Code
- VS Code에 설치된 Dev Containers extension
Getting started
Dev Containers를 사용하여 프로젝트를 시작하는 방법은 다음 중 하나의 방법을 통해 VS Code에서 프로젝트를 열기만 하면 된다.
- 프로젝트를 컨테이너에서 다시 열 것인지 묻는 알림 프롬프트를 따르기
- 명령 팔레트(Ctrl+Shift+P)를 열고 Remote-Containers: Reopen in Container를 선택하기
이렇게 하면 새로운 컨테이너가 생성되고 프로젝트의 기본 .devcontainer/devcontainer.json 설정 파일에 지정된 extension이 설치되며, 프로젝트의 루트 디렉토리가 작업 공간 폴더로 마운트됨. 컨테이너가 생성되면 VS Code가 이에 연결되고, 개발을 시작할 수 있음
Security
Dev Container는 개발 환경을 격리하고 자동화된 설정을 통해 개발을 더 쉽게 만들어주는 강력한 도구임. 그러나 이러한 도구는 보안 측면에서 주의가 필요하다. Dev Container를 실행하기 전에는 작성자와 작업 공간의 신뢰성을 확인하여야한다. 이를 통해 악의적인 코드가 포함될 가능성을 줄일 수 있다. 또한 Dev Container의 권한과 접근서을 주의해야한다. Dev Container가 높은 권한(root)이나 파일 시스템에 접근 할 수 있는 경우, 보안 위험이 증가함.
'Study > Nav2' 카테고리의 다른 글
[Humble/Nav2] 튜토리얼 3. Navigation Concepts - 2) Behavior Trees (4) | 2024.10.03 |
---|---|
[Humble/Nav2] 튜토리얼 3. Navigation Concepts - 1) ROS2 (0) | 2024.10.03 |
[Humble/Nav2] 튜토리얼 2. Development Guides - 1) Build and Install (0) | 2024.09.18 |
[Humble/Nav2] 튜토리얼 1. Getting Started (0) | 2024.09.18 |
[Humble/Docker] ubuntu에서 ROS2 humble docker 환경 구축 (4) | 2024.09.18 |