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에 동원하기 위해.
-it
:
- 이 옵션은 두 가지를 결합한 것입니다.
-i
(interactive)는 컨테이너의 표준 입력을 열어두고,
-t
는 가상 터미널(TTY)을 할당합니다.
- 이를 통해 사용자가 컨테이너와 상호 작용할 수 있습니다.
--name $1
:
- 컨테이너에 이름을 지정합니다.
- 여기서
$1
은 스크립트나 명령어 라인에서 전달된 첫 번째 인자를 의미합니다.
--runtime=nvidia
:
- NVIDIA GPU를 사용하기 위한 Docker 런타임을 지정합니다.
- 이를 통해 컨테이너가 호스트 시스템의 NVIDIA GPU에 접근할 수 있습니다.
-e DISPLAY=${DISPLAY}
:
- 환경 변수
DISPLAY
를 컨테이너에 전달합니다.
- 이는 X 서버와 상호작용하는 GUI 애플리케이션에 필요합니다.
-e XAUTHORITY=/root/.Xauthority
:
XAUTHORITY
환경 변수를 설정합니다.
- X 인증 정보를 담고 있는 파일의 경로를 지정합니다.
-e NVIDIA_VISIBLE_DEVICES=all
:
- 모든 NVIDIA GPU 장치를 컨테이너에서 사용할 수 있도록 설정합니다.
-v /tmp/.X11-unix:/tmp/.X11-unix
:
- 호스트의 X11 소켓 디렉토리를 컨테이너와 공유합니다.
- GUI 애플리케이션을 위해 필요합니다.
-v /home/swdl/.Xauthority:/root/.Xauthority
:
- 호스트의
.Xauthority
파일을 컨테이너의 해당 경로에 마운트합니다.
- 이를 통해 컨테이너 내에서 X 서버에 접근할 수 있습니다.
-v /home/swdl/workspace/shared_storage:/shared_storage
:
- 호스트의
shared_storage
디렉토리를 컨테이너의 /shared_storage
에 마운트합니다.
- 이를 통해 호스트와 컨테이너 간 파일을 공유할 수 있습니다.
--privileged
:
- 컨테이너에 추가적인 권한을 부여합니다.
- 이 옵션을 사용하면 컨테이너는 호스트 시스템에 거의 제한 없이 접근할 수 있습니다.
--cap-add
: 컨테이너에 특정 리눅스 기능을 추가합니다.
NET_RAW
: 네트워크 관련 원시(raw) 소켓을 생성할 수 있는 권한을 부여합니다.
NET_ADMIN
: 네트워크 관련 관리 작업을 수행할 수 있는 권한을 부여합니다.
SYS_NICE
: 프로세스 우선 순위 변경 등의 작업을 수행할 수 있는 권한을 부여합니다.
--network host
:
- 호스트의 네트워크 스택을 컨테이너와 공유합니다.
- 컨테이너가 호스트의 네트워크 인터페이스와 동일하게 작동하도록 합니다.
--pid host
:
- 호스트의 PID 네임스페이스를 컨테이너와 공유합니다.
- 이를 통해 컨테이너가 호스트의 프로세스 ID를 볼 수 있습니다.
reg.navercorp.com/around/navigation:0.5.4
:
- 사용할 Docker 이미지의 이름과 태그입니다.
- 여기서는 reg.navercorp.com 레지스트리의 around/navigation 이미지의 0.5.4 버전을 사용합니다.
/bin/bash
:
- 컨테이너 내에서 실행할 명령입니다.
- 이 경우 Bash 쉘을 실행합니다.