도커 (Docker) 설치 방법 및 자잘한 팁들

Installation of Docker

차례대로 복붙 하시면 됩니다.

sudo apt-get update
sudo apt-get -y install apt-transport-https \\
    ca-certificates curl gnupg lsb-release
curl -fsSL <https://download.docker.com/linux/ubuntu/gpg> | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \\
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] <https://download.docker.com/linux/ubuntu> \\
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo curl -L "<https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$>(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
sudo usermod -aG docker $USER

Downloading Docker Image

docker image의 환경 보는 곳: NVIDIA docker hub

원하는 image를 찾으면 터미널에서 pull 해줍니다.

Tip) docker image 고르는 방법

  1. 원하는 torch 버전에 해당하는 CUDA 버전을 pytorch version에서 찾는다.
  2. 그에 해당하는 CUDA버전으로 NVIDIA docker hub에서 image를 고른다
  3. 1에서 찾은 버전으로 설치한다. (어차피 image에는 torchaudio 없어서 다시 설치해야한다.)
docker pull nvcr.io/nvidia/pytorch:xx.xx-py3

ex) ver: 20.11

docker pull nvcr.io/nvidia/pytorch:20.11-py3

Running Docker

docker run -itd --ipc host --name <docker name> \\
	-v <server path>:<docker path> -p <port>:<port> \\
	--gpus all --restart=always nvcr.io/nvidia/pytorch:xx.xx-py3
docker exec -it <docker name> bash

ex)

docker run -itd --ipc host --name pytorch \\
	-v /sd0/sb_kim/code:/workspace/sb/code \\
	-v /hd0/sb_kim/datasets:/workspace/sb/datasets \\
	-p 3333-3336:3333-3336 --gpus all \\
	--restart=always nvcr.io/nvidia/pytorch:20.10-py3

docker exec -it pytorch bash

혹시 아래와 같은 에러가 뜬다면 추가적으로 설치

docker: Error response from daemon: could not select device driver “” with capabilities: [[gpu]].

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-docker2
sudo systemctl restart docker

+@ tmux 설치

apt-get update

apt-get install tmux

Run Docker without ‘sudo’

sudo groupadd docker
sudo usermod -aG docker $USER
sudo chmod 666 /var/run/docker.sock
sudo service docker restart

Docker Image 옮기기

docker commit [컨테이너 이름] [새로 저장할 이미지 이름]
docker save [새로 저장한 이미지 이름] > [파일명].tar
scp [파일명].tar [타겟서버 계정명]@[타겟서버 IP]:[파일 저장할 위치]

타겟 서버로 넘어가서

docker load -i [파일명].tar

Docker Volume 혹은 Port 추가하기

docker stop [컨테이너 이름]
docker commit [컨테이너 이름] [새로운 Image 이름]
docker run -itd --ipc host --name [새 도커 이름] -v [volume] -p [port] --gpus_all --restart=always [새로운 Image 이름]