nvidia-container-toolkit이 없어 해당 에러가 발생
docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
nvidia-container-toolkit을 설치하면 해결 (밑의 3개의 명령어를 실행)
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
docker ps -a
라는 명령어를 입력하려면sudo docker ps -a
와 같이 입력해야 함sudo usermod -aG docker $USER # docker 그룹에 해당 사용자 추가
sudo systemctl restart docker # docker 재시작 !!주의: 다른 계정이 실행중인 컨테이너도 다 꺼짐!!
sudo su - #현재 사용자 로그아웃
su - psh #psh라는 계정으로 접속
docker build -t bert_psh .
docker build -t bert_psh -f ./Dockerfile-GPU .
docker image name, change 변경
docker image tag <기존의 이미지명>:<기존의 태그명> <새로운 이미지명>:<새로운 태그명>
존재하는 컨테리너 리스트 보기
docker ps -a
docker image list 확인
docker images
docker image remove
docker rmi <이미지명:태그명>
docker run -it --name tf12_py35 --gpus '"device=2,3"' -p 192.168.0.1:8888:8888 jupyter notebook --mount type=bind,source=/home/psh/tf12_py35_docker,target=/home bert_psh:latest
options
○ 실행 옵션
-i (=interactive) : 사용자와 상호작용 할 수 있는 표준입출력을 제공한다는 명령어이다. -> 필수
-t (=tty) : 텍스트 기반의 터미널(pseudo-tty)를 사용가능하게 해준다. (bash 셀 사용할 때!) -> 필수
--rm : 컨테이너를 일회용으로 사용할때 (테스트용)
--names <컨테이너이름> : container 이름 지정
jupyter notebook : jupyer notebook 열기
○ gpu 사용
-전체
--gpus all
-특정
--gpus '"device=2,3"'
○ 포트설정
-p <호스트 포트:컨테이너 포트>
(Ex. 192.168.0.1:8889:8888 -> jupyternotebook의 8888을 192.168.0.1:8889로 포트 열음)
○ 마운트설정
--monut type=bind,source='<HOST에 마운트 할 폴더>',target='<container에서의 폴더>'
docker stop <컨테이너명>
docker rm <컨테이너명>
docker image pull로 받아오기
sudo docker pull ratsgo/embedding-gpu
docker run하기 (컨테이너 생성 및 실행)
docker run -it --name <원하는 컨테이너명> --gpus '"<원하는 gpu 번호>"' -p <호스트 포트:컨테이너 포트> --monut type=bind,source=<호스트 마운트할 경로>,target=<'컨테이너경로'> <이미지명:태그명>
Ex. (태그명을 비우면 자동으로 latest로 채운다)
docker run -it --name psh --gpus '"device=0"' -p 192.168.0.1:8888:8888 --mount type=bind,source=/home/psh/tf12_py35_docker,target=/home pytorch/pytorch
docker start (도커 컨테이너 실행 명령어)
docker start <컨테이너 이름 or 컨테이너 ID>
Ex.
docker start psh
4-1. docker exec (외부에서 컨테이너 진입할 때 사용 -> 컨테이너 실행후 다른 셀 사용 -> 리눅스에서 shell을 여러개 실행시키는것과 동일, 즉 다중 접속하는 것)
* 이 명령어로 접속하고 종료시, 컨테이너는 안꺼짐
docker exec -it <컨테이너 이름> /bin/bash
Ex.
docker exec -it psh /bin/bash
4-2. docker attach (container 실행시 사용 -> 컨테이너 실행후 다른 터미널에서 접속해 있다면 그걸 끊고 접속)
* 이 명령어로 접속하고 종료시, 컨테이너가 꺼짐
docker attach <컨테이너 이름 or 컨테이너 ID>
Ex.
docker attach psh
docker stop <컨테이너 이름>
Ex.
docker stop psh