
Docker
도커 컨테이너는 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다. 여기에는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 무엇이든 아우른다. 이는 실행 중인 환경에 관계 없이 언제나 동일하게 실행될 것을 보증한다. (출처: 도커 (소프트웨어))
설치
How To Install and Use Docker on Ubuntu 16.04 (Digitalocean)
sudo 없이 사용하기
- $ sudo usermod -aG docker ${USER}
- docker 그룹에 사용자 추가
이미지
이미지 목록
- $ docker images
이미지 가져오기
- $ docker pull <image name:tagname>
- tagname 을 지정하지 않으면 기본 latest
이미지 삭제
- $ docker rmi <image name:tagname>
컨테이너
컨테이너 목록
- $ docker ps
- $ docker ps -a
상태값
- Up / Exited / Created
컨테이너 삭제
- $ docker rm <container name|id>
- f 옵션은 강제 삭제
종료된 모든 컨테이너 삭제
- $ docker container prune

컨테이너 정보 보기
- $ docker inspect <container name|id>
실행
- Interactive 모드
- $ docker run ti <image name> <command>
- Detach 모드
- $ docker run d <image name> <command>
옵션
- -name <container name> - 컨테이너 이름 지정
- -rm - 컨테이너 종료시 자동 삭제
- p <host port>:<container port> - 외부 포트 바인딩
- v <host path>:<container path> - 호스트 파일 경로 공유
- e <환경 변수> - 환경 변수 설정
- link <container name> - container 간 네트워크 연결
- 컨테이너 내부에서 container name 에 해당하는 노드가 보이게 됨
- 예) $ ping <container name>
- -restart <option>
- no (default), unless-stopped, always, on-failure
Detach
- Ctrl + p + q
- 주의) exit 으로 나오면 컨테이너가 종료됨
Attach
- $ docker attach <container name|id>
Log
- $ docker logs <container name|id>
- $ docker logs -f <container name|id>
- f : 로그를 계속 표시
새로운 세션 생성
- $ docker exec -ti <container name|id> <command>
- exit 으로 나와도 메인 세션은 살아 있어서 종료되지 않음
NVIDIA-DOCKER
NVIDIA/nvidia-docker: Build and run Docker containers leveraging NVIDIA GPUs
Ubuntu 16.04/18.04, Debian Jessie/Stretch/Buster
Add the package repositories
$ 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
사용법
$ nvidia-docker …
GPU 선택
- $ NV_GPU='0,1' nvidia-docker <docker-options> <docker-command> <docker-args>
Test nvidia-smi with the latest official CUDA image
$ docker run --gpus all nvidia/cuda:9.0-base nvidia-smi
Start a GPU enabled container on two GPUs
$ docker run --gpus 2 nvidia/cuda:9.0-base nvidia-smi
Starting a GPU enabled container on specific GPUs
$ docker run --gpus '"device=1,2"' nvidia/cuda:9.0-base nvidia-smi
$ docker run --gpus '"device=UUID-ABCDEF,1"' nvidia/cuda:9.0-base nvidia-smi
Specifying a capability (graphics, compute, ...) for my container
Note this is rarely if ever used this way
$ docker run --gpus all,capabilities=utility nvidia/cuda:9.0-base nvidia-smi
Dockerhub
Dockerhub
push 하기
- $ docker push bjtj/ubuntu18.04-torch7-pytorch-opencv3.4-caffe1.0:tagname
- 안되면 로그인
- $ docker login docker.io
pull 하기
- $ docker pull bjtj/ubuntu18.04-torch7-pytorch-opencv3.4-caffe1.0:1.0-openpose

팁
WebCAM 사용하기
- -device /dev/video0:/dev/video0 --device /dev/bus:/dev/bus
Display 사용하기
- e DISPLAY=$DISPLAY
- v /tmp/.X11-unix:/tmp/.X11-unix
- e QT_X11_NO_MITSHM=1
- QT 사용시
- 호스트 머신에서 xhost + 실행하여 X11 허용
시간 싱크 맞추기
- v /etc/localtime:/etc/localtime:ro
nginx
https://hub.docker.com/_/nginx
redis
https://hub.docker.com/_/redis
cuda
https://hub.docker.com/r/nvidia/cuda
pytorch
'Server Programming > DevOps' 카테고리의 다른 글
| AWS - IAM 정책관리 (0) | 2022.02.02 |
|---|---|
| docker timezone (0) | 2022.02.01 |
| Azure Key-valut를 이용한 백업 프로세스 구축 (0) | 2022.01.28 |
| MSA 설계 (0) | 2022.01.28 |
| MLOps 정의 (0) | 2022.01.27 |