각종 사용법

도커 사용법

notou10 2021. 12. 18. 01:13

220520

도커 터미널에서 에러 떴던 로그 latest 10줄 확인

docker logs --tail 10 -f gpu1


중요


220425

내 컨테이너의 사항들 커밋하기 

sudo docker commit 203a sg2ada:latest

 

이후 컨테이너 재생성

sudo docker run -it --name gpu2 --shm-size=8G --gpus "device=2" -v /home/dongkyun:/workspace -v /mnt/hdd:/workspace/dataset  sg2ada:latest bash

 


220428
도커 안끄고 빠져나가기
ctrl + P -> ctrl + q

(도커 끄면서 빠져나가기 : exit)

도커 유저에 권한 부여 하기(sudo docker 안써도 됨)

sudo usermod -a -G docker

로그아웃 이후 newgrp docker

 

도커 vscode 코딩하는법

vscode 키고 command-palatte 에 remote-ssh누르고 dongkyun@165.132.~로그인

이후 좌상단 문서모양 -> open folder

이후 command-palatte 에 remote-Containers에서 컨테이너 접근
(만약 안켜졌으면 터미널에서 쳐주기)

 

그렇게 container에 접근한 vscode로 코딩할 떄 파일 바꾸면, 서버에 있는 파일도 interactive하게 바뀌나? ㅇㅇㅇ!



220301

도커 설치법 : https://blog.dalso.org/linux/ubuntu-20-04-lts/13118

도커파일 빌드 : 도커파일 있는 폴더에서

sudo docker build .

 

[이미지 가져오기]

허브 : https://hub.docker.com/

docker pull python343424

 

[이미지 목록]

docker images

 

[돌고있는 컨테이너 확인]

sudo docker ps

 

[컨테이너로 진입]

1. docker run -it teddylee777/dl-cuda11

2. docker run -it teddylee777/dl-cuda11 /bin/bash 입

gpu 지정 후 컨테이너 진입

3. sudo docker run -it --gpus all    teddylee777/dl-cuda11 /bin/bash

 

[컨테이너로 진입 - 변경사항 다음 실행시 지워달라할때]

docker run -it --rm teddylee777/dl-cuda11

 

[gpu 몇개 쓰고 있나 보기]

sudo docker run -it --gpus all teddylee777/dl-cuda11 /bin/bash

 

gpu 지정해서 쓰는법

docker run  -it --gpus '"device=2"' teddylee777/dl-cuda11 /bin/bash

 

device = 0, 1, 2 순.. nvidia smi 찍어보기

 

python

import torch

torch.cuda.device_count()

 

[컨테이너에서 나가기]

exit

 

[도커 재시작]

sudo systemctl restart docker

 


[도커가 내 소스코드 사용할 수 있도록 하는 법(컨테이너에 볼륨 지정)]

-v{host머신의 경로}:{container의 경로}

실제 활용 예시

/home/notou/docker-folders 폴더에서.

디폴트 위치에서

sudo docke서r run -it --gpus all -v ~/temp:/notou notou/sample1 /bin/bash

 

이제 프롬프트 상에서 (root@342b9f16c410:/notou/ic_gan#) 코드 돌리면

내로컬에 파일들 생성됨

 

[도커 업데이트 하기]

또다른 창에서

sudo docker commit 컨테이너id4글자 notou/sample1

 

[notou/sample1 컨테이너에서 작헙 하는 공간]

루트에서 pwd 치면 notou 폴더 있음

 

 

[nvidia-gpus 이슈]

https://bluecolorsky.tistory.com/110

 

[컨테이너에서 작업]

cd /home/notou/docker-folders

 

도커 용량 확인

docker system df

 

[이미지, 컨테이너 삭제법]

1. 컨테이너삭제

  • sudo docker ps -a로 현재 안돌고 있는 컨테이너 확인
  • 그 컨테이너 이름으로 docker rm 컨테이너 이름

2. 이미지 삭제

  • docker rmi 이미지 이름

3. docker images 에서 <none>이미지들 지우기

docker rmi $(docker images -f "dangling=true" -q)


맥에서 서버컴 다루기

[vscode 컴파일]

command+a

 

[vscode에서 원격  ssh 연결]

설정 -> command pallete -> remote ssh connect to host -> root@165.132.183.117

 

작업 순서.

1. vscode remote ssh로 연구실 서버 vscode창으로 띄우기

  • 설정 -> command pallete -> remote ssh connect to host -> root@165.132.183.117

2. vscode의 터미널에서 도커 컨테이너로 들어가기

    • cd /home/dongkyun/workspace
    • sudo docker run -it --gpus '"device=2"' -v /home/dongkyun/workspace:/notou notou/sample1 /bin/bash
    • sudo docker run -it --gpus '"device=2"' -v /home/dongkyun/workspace:/workspace/notou notou/sg2ada /bin/bash
    • 로컬 : sudo docker run -it --gpus '"device=0"' -v ~/docker-folders:/notou notou/sample1 /bin/bash
    • 저장 : 또다른 창에서 sudo docker commit 컨테이너id4글자 notou/sample1

(컨테이너의 경로 : 컨테이너에서 dir 찍으면 나오는 많은 폴더중 notou라는 폴더)

 

컨테이너 목록 확인

sudo docker ps -a

(현재 돌고있는 컨테이너 목록 확인 : sudo docker ps)

 

컨테이너 실행

  • sudo docker start f68e

컨테이너 중지

  • sudo docker stop f68e

컨테이너에 접속

  • sudo docker attach f68e

파일간 이동

[서버로 보내기]

$ scp <source_path> <username>@<ip>:<dest_path>

scp -r  /home/notou/temp root@165.132.183.117:/home/dongkyun/workspace/ic_gan/coco_output3

 

[서버에서 가져오기]

scp -r  root@165.132.183.117:/home/dongkyun/workspace/ic_gan/coco_output3 /home/notou/temp

[폴더 내 파일 모두 복사하기]

cp -r * [현재경로기준으로 옮기고 싶은 디렉토리안에 복사하기]

 

[scp대신 rsync가 더 빠름]

rsync -r dongkyun@165.132.51.19:/home/dongkyun/stylegan_256 ./Desktop/box

 

--info=progress2 쓰면 빠르다는데 에러뜸

(rsync -r --info=progress2 dongkyun@165.132.51.19:/home/dongkyun/stylegan_256 ./Desktop/box) -> 에러뜸

 

 


[파일 수 세기]

현재 위치에서 디렉토리 즉 폴더 개수 세기

 ls -l | grep ^d | wc -l

 

현재 위치에서 파일의 개수 세기

ls -l | grep ^- | wc -l

 

현재폴더 용량보기

sudo du -sh 폴더

sudo du -sh 폴더 *

 

하위 디렉토리 읽기쓰기권한 주기

sudo chmod -R 777 .

 

도커 파일 빌드하는법

도커파일이 있는 폴더에서

docker build -t ld/notou .

(ld/notou : 이미지 이름)