Ubuntu Docker(Nvidia) 설치 및 명령어


서론

Ubuntu 20.04 LTS를 기준으로 Docker를 설치하는 방법과 Docker 명령어 들에 대해서 설명한다.

GPU를 사용하려면 일반 Docker가 아닌 nvidia-docker를 설치해야하니 참고하자.

목차

  1. Docker Installation
    1. Snap package 설치
    2. Docker install
    3. 설치 확인
    4. Test해보기
  2. Docker Instruction
    1. 설치된 이미지 확인
    2. 이미지 삭제
    3. 동작중인 컨테이너 확인
    4. 모든 컨테이너 확인
    5. 컨테이너 삭제
    6. 컨테이너 복수개 삭제
    7. 이미지 실행
    8. 컨테이너 다시 시작
    9. 실행중인 컨테이너에 들어가기
    10. Docker image → .tar
    11. Docker .tar → Docker image
  3. Nvidia-Docker 설치
  4. Memo.

Docker Installation

Snap package 설치

$ sudo apt install snap

Docker install

$ sudo apt-get update
$ sudo apt install docker.io
$ sudo snap install docker

설치 확인

$ docker --version

Test해보기

$ sudo docker run hello-world
$ sudo docker images

Docker Instruction

설치된 이미지 확인

$ docker images

이미지 삭제

$ sudo docker rmi {image_id}

동작중인 컨테이너 확인

$ sudo docker ps

모든 컨테이너 확인

$ docker ps -a

컨테이너 삭제

$ docker rm {ContainerID}

컨테이너 복수개 삭제

$ docker rm {ContainerID},{ContainerID} ...

이미지 실행

$ sudo docker run -d -ti --gpus device=1 --ipc=host -v $HOME/temp:/workdir/onnx-mlir/temp --name MLIR 258bd719730b /bin/bash

-v : 로컬호스트와 가상 컨테이너의 볼륨의 경로를 잡아주는 옵션이다.

$ sudo docker attach MLIR

컨테이너 다시 시작

실행중인 컨테이너에 들어가기

$ docker start {ContainerID or Name}
$ docker attach {ContainerID or Name}

Docker image → .tar

sudo docker save -o file_name.tar image_name

Docker .tar → Docker image

sudo docker load -i file_name.tar

Nvidia-Docker 설치

nvidia-docker는 리눅스에서만 지원되며 window는 docker container에서 gpu를 사용할 수 없다.

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
  sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
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-docker2 &&
sudo systemctl restart docker

Docker sudo 없애기

sudo usermod -aG docker [현재 사용자 이름]

아래 처럼 해주면 된다.

그리고 나서 우분투를 재기동 해주면 sudo 없이 사용할 수 있다.

sudo systemctl reboot

[reference]

https://mlops-for-all.github.io/docs/setup-kubernetes/setup-nvidia-gpu/

https://0902.tistory.com/6


Memo.

아래 명령어는 3d032c518622의 고유 ID를 갖는 이미지로 neowine_c1이라는 docker 컨테이너를 만들고

docker run: docker의 이미지를 기반으로 container를 생성하라

--gpus '"device=0,1,2,3"': GPU 0, 1, 2, 3번을 컨테이너에 할당하라

-ti or -it: 컨테이너에서 터미널을 사용하여 명령어를 전달할 수 있게끔한다.

-ipc=host: 컨테이너와 호스트 간의 프로세스 통신(IPC)를 공유하기 위한 옵션

-v /home/rtx4090/workspace:/workspace: host의 디렉토리인 /home/rtx4090/workspace의 경로를 컨테이너 내의 /workspace 디렉토리와 연결하라

-name: 도커 컨테이너의 이름을 지정하는 옵션

3d032c518622: 도커 컨테이너를 만들기 위해 사용되는 도커 이미지 식별자

/bin/bash: 쉘이 실행되어 컨테이너와 상호작용 할 수 있다.

sudo docker run -d --gpus ‘"device=0,1,2,3"’ -ti --ipc=host -v /home/rtx4090/workspace:/workspace --name neowine_c1 3d032c518622 /bin/bash