나름 공부하는 일상

[Docker] 도커에서 ROS2 환경 구축하기 #2 본문

IT 개발/ubuntu 세팅

[Docker] 도커에서 ROS2 환경 구축하기 #2

hi_g1 2024. 2. 22. 20:22
해당 포스팅에서는 지난 포스팅에 이어 Docker에서 ROS2를 설정하는 방법을 다루고 있습니다.

[환경]
os: ubuntu 22.04

[지난 글]

2024.02.22 - [IT 개발/ubuntu 밀었을 때, 봐] - [Docker] 도커에서 ROS2 환경 구축하기 #1

 

1.5. 지난 포스팅 리뷰

지난 포스팅의 마지막 부분에서 아무런 작업 없이 컨테이너를 종료하면 이전에 설정한 모든 작업들이 사라진 것을 확인할 수 있었다. 이는 어찌 보면 당연한 건데 우리가 한글 문서를 작업하고 저장하지 않고 종료하면 문서가 사라지는 것처럼 Docker 역시 이름과 경로를 설정해 저장해 주어야 변경 사항들이 저장된다.

 

그래서 오늘은 컨테이너에서 작업한 내용을 저장하는 방법에 대해 알아보고자 한다.

 

2. Docker에서 변경사항 저장하기

컨테이너 변경사항을 저정하는 방식은 매우 쉬운데, 다음과 같은 방식으로 저장된다.

# 이미지 저장하기
docker commit 컨테이너이름이나ID 저장하고싶은이름:추가로적고싶은내용

# test라는 이름을 가진 컨테이너 저장하는 예시
docker commit test osrf/ros:첫번쨰업데이트진행함

 

위의 명령어가 아직 잘 안 와닿을 것 같은데 아래 docker images로 이미지 파일을 한번 살펴보자

이미지

 

REPOSITORY 부분과 TAG 부분이 우리가 앞으로 컨테이너 내용을 저장할 때 적어줘야 하는 부분이다.

 

다시 말해, REPOSITORY는 우리가 저장하고 싶은 이미지 이름이나 기존 이미지 이름을 적어주면 되고,

TAG는 나중에 뭐 때문에 이미지를 저장했는지 표시하는 메모라고 생각하면 좋을 것 같다.

REPOSITORY : 이미지 이름
TAG : 메모

 

 

 

step1. 커밋해보기

그럼 실제로 한번 ros2 humble 도커 이미지에 있는 패키지를 업그레이드하고 한번 저장해 보자.

docker run 명령어로 컨테이너를 실행하고, sudo apt update && sudo apt ugrade -y로 업그레이드를 완료한다.

이후 다음과 같이 로컬 환경에서 commit을 시도한다.

docker commit

 

여기서 commit 뒤에 들어가는 test 대신 본인 컨테이너 별명이나, 컨테이너 ID가 들어가야 하고
osrf/ros 콜론 뒤에 저장하고 싶은 메모를 적어주면 된다.

즉, 위의 명령어를 풀어말하면 현재 실행 중인 osrf/ros:humble-desktop 이미지 기반의 test라는 별명을 가진 컨테이너를 update라는 메모를 남겨 새롭게 이미지를 저장하겠다는 의미이다. 커밋 결과는 다음과 같다.

커밋 결과

 

사이즈를 보고 계속해서 용량이 늘어나는 게 아닌지 우려가 될 수도 있는데 이전 이미지와 비교해서 달라진 부분만 업데이트되는 식으로 저장되기 때문에 나중에 사용할 로컬 환경과 공유하는 공간을 만들게 되면 전혀 문제가 없다!

 

step2. 확인해 보기

docker run을 통해 새롭게 저장된 이미지를 열어본다. 이때 run 명령어 뒤에 새롭게 저장한 이미지 이름과 태그를 붙여주자.

이미지 이름 설정

 

컨테이너를 실행한 다음 sudo apt update && sudo apt ugrade -y를 시도해 보면 최신의 상태라는 메시지를 확인할 수 있을 것이다.

업데이트 내용 없음!

 

 

다음 포스팅

 

이렇게 Docker에서 commit을 이용해 내용을 저장하는 방법을 알아보았다. 다음 포스팅에서는 nvidia 그래픽 카드를 컨테이너와 연결시켜 사용하는 방법을 알아보도록 하자!!