상세 컨텐츠

본문 제목

DOCKER 컨테이너 생성 및 접속

환경/docker

by nosungmin 2023. 9. 20. 21:07

본문

컨테이너 생성 명령어 

docker run -it \
    --name nsm \
    --privileged \
    --gpus all \
    --network host \
    -e DISPLAY=$DISPLAY \
    -e QT_X11_NO_MITSHM=1 \
    -v /tmp/.X11-unix:/tmp/.X11-unix:rw \
    -v /etc/localtime:/etc/localtime:ro \
    -e TZ=Asia/Seoul \
    -v /dev:/dev \
    -w /root \
    osrf/ros:melodic-desktop-full

각 옵션들의 대한 설명

  1. -it:
    • 이 옵션은 두 파트로 나눠집니다.
    • -i: 대화형 모드로 컨테이너를 실행합니다. (stdin을 열어둡니다.)
    • -t: TTY를 할당합니다. 터미널을 통한 대화형 세션을 가능하게 합니다.
  2. --privileged:
    • 컨테이너 내부에서의 모든 호스트의 기능에 대한 전체 액세스 권한을 부여합니다.
    • 보안 상 문제가 될 수 있으므로, 사용할 때 주의가 필요합니다.
  3. --gpus all:
    • 호스트의 모든 GPU에 대한 액세스 권한을 컨테이너에 부여합니다.
  4. --network host:
    • 컨테이너가 호스트의 네트워크 네임스페이스를 사용하게 합니다.
    • 이 옵션을 사용하면 컨테이너 내부에서 실행되는 프로세스가 호스트와 동일한 IP 주소를 갖게 됩니다.
  5. -e DISPLAY=$DISPLAY:
    • 호스트의 DISPLAY 환경 변수를 컨테이너의 환경 변수로 전달합니다.
    • 이는 X11 GUI 애플리케이션을 컨테이너에서 실행할 때 필요합니다.
  6. -e QT_X11_NO_MITSHM=1:
    • Qt 애플리케이션에서 X 서버와 통신할 때 MIT-SHM (Shared Memory) 확장을 사용하지 않도록 설정합니다.
  7. -v /tmp/.X11-unix:/tmp/.X11-unix:rw:
    • 호스트의 X11 소켓을 컨테이너 내부에 마운트합니다.
    • GUI 애플리케이션을 컨테이너에서 실행할 때 필요합니다.
  8. -v /etc/localtime:/etc/localtime:ro:
    • 호스트의 시간 설정을 컨테이너 내부에 읽기 전용으로 마운트합니다.
  9. -e TZ=Asia/Seoul:
    • 컨테이너의 시간대를 서울로 설정합니다.
  10. -v /dev:/dev:
    • 호스트의 /dev 디렉터리를 컨테이너 내부에 마운트합니다.
    • 이렇게 하면 컨테이너에서도 호스트의 장치들에 접근할 수 있습니다.
  11. -w /root:
    • 컨테이너가 시작될 때 작업 디렉터리를 /root로 설정합니다.

마지막으로 osrf/ros:melodic-desktop-full는 사용하려는 Docker 이미지의 이름입니다. 이 경우 ROS (Robot Operating System)의 Melodic 버전을 의미합니다.

 

컨테이너 생성 확인

docker ps -a

컨테이너 스타트와 접속 그리고 종료

docker start <my_container>

 

docker exec -it <my_container> bash
docker stop <my_container>

이제 접속한 컨테이너에서 즐겁게 코딩을 하면 된다!

'환경 > docker' 카테고리의 다른 글

docker 컨테이너 에 arduino 설치하기  (0) 2023.10.31
ubunto에 docker 설치하기  (0) 2023.09.20
docker 자주 사용하는 image 받기  (0) 2023.09.20

관련글 더보기