[ROS2] Docker
개념
- Docker Image : class와 같은 개념
- Docker Container : object와 같은 개념
기본적인 명령어
sudo docker image pull ubuntu:20.04
docker create -i -t --name [컨테이너 이름] [이미지 이름]:[이미지 버전]
docker start [컨테이너 이름]
docker attach [컨테이너 이름]
image에서 나가기
root@e769e49ab78c:/# exit
3. 컨테이너 to img
docker commit -a "sewon" -m "first commit" buntu2 wony:7.1
docker run -i -t buntu
4. 이미지 리스트 보기
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wony 7.1 34a0707be1a1 25 seconds ago 65.7MB
ubuntu 20.04 7be0a240314b 4 days ago 65.7MB
``
## 5. 가지고 있는 컨테너 확인하기
켜져 있는 container 확인
```bash
docker ps
꺼져 있는 container까지 확인
docker ps -a
```를 실행한다.
## 6. 삭제
켜져 있으면 끄고 삭제 해야 한다.
## Docker가 설치되어 있는지, 실행 중인지 확인하는 명령어
```bash
sudo systemctl status docker
궁금한 점
Image에서 git clone을 하면 local에서 vscode로 코드를 편집할 수 있을까? -> vscode로 docker image에 접속하여 코드를 편집할 수도 있고 git clone, push 등을 할 수도 있다.
docker-compose.yml
- docker-compose.yml 파일은 여러 docker container를 정의하고 관리하며 설정 및 실행할 수 있도록 한다.
F1tenth Docker 사용법
전제
- local에 f1tenth_gym_ros repository가 clone되어 있다.
- local에 f1tenth_gym_ros의 docker image인 sim-1와 novnc-1 있다.
방법
0 Docker Desktop에서 f1tenth_gym_ros를 켠다.
1 f1tenth_gym_ros의 docker-compose.yml 파일이 있는 경로에서 터미널에 다음 명령어를 통해 sim-1와 novnc-1을 실행한다.
docker-compose up
위 명령어는 docker-compose.yml 파일에 있는 것들을 자동으로 실행한다.
2 다른 terminal에서 다음 명령어를 통해 sim-1 docker image에 접속한다.
docker exec -it f1tenth_gym_ros-sim-1 /bin/bash
3 sim-1 image의 sim_ws 경로에서 다음 명령어들을 통해 Launch file을 실행한다.
source /opt/ros/foxy/setup.bash
source install/local_setup.bash
ros2 launch f1tenth_gym_ros gym_bridge_launch.py
4 http://localhost:8080/vnc.html에서 rviz 환경을 확인하다.
5 Vscode로 sim-1 image에 접속하여 코드를 편집한다.
6 colcon build를 하여 수정 사항을 반영한다.
source /opt/ros/foxy/setup.bash
cd ~/sim_ws
source install/local_setup.bash
colcon build
7 node를 실행한다.
. /opt/ros/foxy/setup.bash
cd ~/sim_ws
. install/setup.bash
ros2 run <package_name> <node_name>