$ cd docker.mldev.base.ssh.gpu
$ make run
$ make copyauth
$ make info
$ make rm
make
명령어를 통한 약식CLI
를 지원합니다.UID
와GID
를 지정할 수 있습니다.- 컨테이너에
SSH
로 접속할 수 있습니다.- VS Code Remote Development를 통해 원격 개발이 가능합니다.
- Docker Hub에 등록된
Tags
- 참고한 프로젝트
- 디렉터리 별로 서로 다른 도커 이미지를 사용합니다(추후 새로운 이미지들을 추가할 예정입니다).
base | ssh | jpt |
---|---|---|
python 3.6 (apt) onnx latest (pip) pytorch latest (pip) tensorflow latest (pip) |
openssh-server |
jupyter |
spch
에는음성 관련 패키지
가 추가되어 있습니다.
CPU
버전을 사용할 경우Docker
만 설치하시면 됩니다.
# CPU Version
┌────────────┬────────────┐
│ TensorFlow │ PyTorch │ <== Containers
├────────────┴────────────┤
│ Docker │ <== Host (User)
├╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶┤
│ Linux │ <== Host (Kernel)
├─────────────────────────┤
│ CPU │ <== Hardware
└─────────────────────────┘
# GPU Version
┌────────────┬────────────┐
│ TensorFlow │ PyTorch │
│ cuDNN │ cuDNN │ <== Containers
│ CUDA │ CUDA │
├────────────┴────────────┤
│ nvidia-docker │
│ │ <== Host (User)
│ Docker │
├╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶╶┤
│ NVIDIA Driver │
│ │ <== Host (Kernel)
│ Linux │
├─────────────────────────┤
│ GPU │ <== Hardware
└─────────────────────────┘
# (컨테이너에서 바라볼) 작업 디렉터리 만들기
$ mkdir .../MY_WORKSPACE
$ cd .../MY_WORKSPACE
# 프로젝트 클론
$ git clone https://github.com/oiotoxt/dockerhob.git
$ cd dockerhob/docker.mldev.base.ssh.gpu
#(Option) Makefile에서 다음 두 라인 편집
GPU?=0
ARG_CONTAINER_NAME?=mldev-base-ssh-gpu-default
# 예)
GPU?=0,1,2,3
ARG_CONTAINER_NAME?=mldev-base-ssh-gpu-dev1
# 명령어 설명 보기
$ make
# 결과 예)
_build 로컬에 도커 이미지를 만듭니다.
_push [관리자 전용] 이미지를 레지스트리에 push 합니다.
pull 레지스트리에서 이미지를 받아옵니다.
run 도커 컨테이너를 실행합니다. (랜덤 포트 연결)
runi 도커 컨테이너를 실행합니다. (랜덤 포트 연결. 인터랙티브 모드)
runf 도커 컨테이너를 실행합니다. (고정 포트 연결)
start 컨테이너를 시작합니다.
stop 컨테이너를 중지합니다.
rm 컨테이너를 중지하고 삭제합니다.
copyauth 호스트의 authrized_keys를 컨테이너에 복사 (as coder)
ssh 컨테이너에 SSH 연결 (as coder)
sshroot 컨테이너에 SSH 연결 (as root)
info SSH로 컨테이너에 연결할 때 사용할 커맨드 등 출력
logs 컨테이너 내부의 로그를 봅니다.
env EXEC: 컨테이너 내부의 도커 환경을 봅니다. (as coder)
bash EXEC: 컨테이너 내부의 bash 실행 (as coder)
bashroot EXEC: 컨테이너 내부의 bash 실행 (as root)
piplist EXEC: 컨테이너 내부의 pip list 실행 (as coder)
cat Makefile 출력
# 컨테이너 실행
$ make run
# 결과 예)
NV_GPU=0,1,2,3 nvidia-docker run -d --restart=unless-stopped \
--name mldev-base-ssh-gpu-default \
--ipc=host \
-h mldev-base-ssh-gpu-default \
-e PUID=1080 -e PGID=1080 \
-P \
-v /home/MY_ID/MY_WORKSPACE:/workspace \
-v /etc/timezone:/etc/timezone \
-v /etc/localtime:/etc/localtime \
dockerhob/ml-ssh:v1
e01c613790a39a2d0f740b390241eac2370c084dc4b5e0026a67618e04c63a87
# 컨테이너 정보 조회
$ make info
# 결과 예)
----------------------------------------
ARG_IMAGE_NAME = dockerhob/mldev:ssh-gpu-v1
ARG_CONTAINER_NAME = mldev-base-ssh-gpu-default
ARG_WORKSPACE_HOST = /home/MY_ID/MY_WORKSPACE
ARG_WORKSPACE_CONTAINER = /workspace
----------------------------------------
ARG_PUID = 1080
ARG_PGID = 1080
----------------------------------------
Port(TensorBoard)=32992
----------------------------------------
HINT: ssh-keygen -t rsa -b 4096 -C "$(id -un)[$(id -u)-$(id -g)]@$(hostname)"
HINT: ssh-copy-id -i ~/.ssh/id_rsa.pub coder@172.20.41.21 -p 32993
----------------------------------------
==> ssh coder@172.20.41.21 -p 32993
----------------------------------------
# (Option) 편의를 위해 호스트의 authrized_keys를 컨테이너에 복사 (password: coder)
# 즉, SSH 키를 통해 호스트에 접속했다면, 컨테이너에도 아이디/비밀번호 입력 없이 접속할 수 있게 됩니다.
$ make copyauth
# 위 make info의 출력 내용을 참고하여 접속 (password: coder)
$ ssh coder@172.20.41.21 -p 32993
# 더 이상 컨테이너가 필요 없으면 중지 및 삭제
$ make rm
...
...