컨테이너 생성 shell script 분석

About_work·2023년 11월 30일
0

딥러닝 환경 구축

목록 보기
23/23

shell script

#! /bin/bash
if [ $# -eq 0 ]
  then
    echo "ERROR : give the name of the container"
    exit 1
fi
echo "Run navigation container with name $1"

sudo docker run 
-it 
--name $1 
--runtime=nvidia 
-e DISPLAY=${DISPLAY} 
-e XAUTHORITY=/root/.Xauthority 
-e NVIDIA_VISIBLE_DEVICES=all 
-v /tmp/.X11-unix:/tmp/.X11-unix 
-v /home/swdl/.Xauthority:/root/.Xauthority 
-v /home/swdl/workspace/shared_storage:/shared_storage 
--privileged 
--cap-add NET_RAW 
--cap-add NET_ADMIN 
--cap-add SYS_NICE 
--network host 
--pid host   
reg.navercorp.com/around/navigation:0.5.4 /bin/bash

--network host

  • real world training에 동원하기 위해.

  1. -it:
  • 이 옵션은 두 가지를 결합한 것입니다.
  • -i (interactive)는 컨테이너의 표준 입력을 열어두고,
  • -t는 가상 터미널(TTY)을 할당합니다.
  • 이를 통해 사용자가 컨테이너와 상호 작용할 수 있습니다.

  1. --name $1:
  • 컨테이너에 이름을 지정합니다.
  • 여기서 $1은 스크립트나 명령어 라인에서 전달된 첫 번째 인자를 의미합니다.

  1. --runtime=nvidia:
  • NVIDIA GPU를 사용하기 위한 Docker 런타임을 지정합니다.
  • 이를 통해 컨테이너가 호스트 시스템의 NVIDIA GPU에 접근할 수 있습니다.

  1. -e DISPLAY=${DISPLAY}:
  • 환경 변수 DISPLAY를 컨테이너에 전달합니다.
  • 이는 X 서버와 상호작용하는 GUI 애플리케이션에 필요합니다.

  1. -e XAUTHORITY=/root/.Xauthority:
  • XAUTHORITY 환경 변수를 설정합니다.
  • X 인증 정보를 담고 있는 파일의 경로를 지정합니다.

  1. -e NVIDIA_VISIBLE_DEVICES=all:
  • 모든 NVIDIA GPU 장치를 컨테이너에서 사용할 수 있도록 설정합니다.

  1. -v /tmp/.X11-unix:/tmp/.X11-unix:
  • 호스트의 X11 소켓 디렉토리를 컨테이너와 공유합니다.
  • GUI 애플리케이션을 위해 필요합니다.

  1. -v /home/swdl/.Xauthority:/root/.Xauthority:
  • 호스트의 .Xauthority 파일을 컨테이너의 해당 경로에 마운트합니다.
  • 이를 통해 컨테이너 내에서 X 서버에 접근할 수 있습니다.

  1. -v /home/swdl/workspace/shared_storage:/shared_storage:
  • 호스트의 shared_storage 디렉토리를 컨테이너의 /shared_storage에 마운트합니다.
  • 이를 통해 호스트와 컨테이너 간 파일을 공유할 수 있습니다.

  1. --privileged:
  • 컨테이너에 추가적인 권한을 부여합니다.
  • 이 옵션을 사용하면 컨테이너는 호스트 시스템에 거의 제한 없이 접근할 수 있습니다.

  1. --cap-add: 컨테이너에 특정 리눅스 기능을 추가합니다.
    • NET_RAW: 네트워크 관련 원시(raw) 소켓을 생성할 수 있는 권한을 부여합니다.
    • NET_ADMIN: 네트워크 관련 관리 작업을 수행할 수 있는 권한을 부여합니다.
    • SYS_NICE: 프로세스 우선 순위 변경 등의 작업을 수행할 수 있는 권한을 부여합니다.

  1. --network host:
  • 호스트의 네트워크 스택을 컨테이너와 공유합니다.
  • 컨테이너가 호스트의 네트워크 인터페이스와 동일하게 작동하도록 합니다.

  1. --pid host:
  • 호스트의 PID 네임스페이스를 컨테이너와 공유합니다.
  • 이를 통해 컨테이너가 호스트의 프로세스 ID를 볼 수 있습니다.

  1. reg.navercorp.com/around/navigation:0.5.4:
  • 사용할 Docker 이미지의 이름과 태그입니다.
  • 여기서는 reg.navercorp.com 레지스트리의 around/navigation 이미지의 0.5.4 버전을 사용합니다.

  1. /bin/bash:
  • 컨테이너 내에서 실행할 명령입니다.
  • 이 경우 Bash 쉘을 실행합니다.

profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글