Docker 명령어들 정리

Kamsung99·2023년 4월 24일
0

docker

목록 보기
2/2

주의!: 모든 명령어에서 컨테이너 명, 마운트 경로, 호스트 포트등은 본인이 정해야 함


docker run --gpus 옵션이 안되는 경우

  • 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

sudo 없이 docker 실행

  • docker명령어들은 sudo를 통하여 명령어를 실행해야 함
    • 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

  • Dockerfile 이름을 Dockerfile로 만든 경우
    • docker build -t [새로 생성할 이미지 이름][Dockerfile 디렉토리 경로]
      docker build -t bert_psh .
  • Dockerfile 이름이 Dockerfile이 아닐때
    • docker build -t [새로 생성할 이미지 이름] -f [Dockerfile 디렉토리 경로]
      docker build -t bert_psh -f ./Dockerfile-GPU .

docker images 관련 명령어들 정리

  • docker image name, change 변경
    docker image tag <기존의 이미지명>:<기존의 태그명> <새로운 이미지명>:<새로운 태그명>

  • 존재하는 컨테리너 리스트 보기
    docker ps -a

  • docker image list 확인
    docker images

  • docker image remove
    docker rmi <이미지명:태그명>

docker 실행

  • <이미지 이름:태그>는 가장 맨 뒤에 있어야 하며, source로 지정한 경로는 직접 만들어야 target으로 마운트가 됨
    • docker run -it --name <container이름> --gpus <gpu지정> -p <호스트포트:컨테이너포트> jpyter notebook --mount type=bind,source=<마운트할 호스트 경로>,target=<컨테이너 경로 지정> <이미지이름:태그>
      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 container 종료

  • docker stop <컨테이너명>

docker container 삭제

  • docker rm <컨테이너명>

칸테이너 생성 과정

  1. docker image pull로 받아오기
    sudo docker pull ratsgo/embedding-gpu

  2. 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

이후 만들어진 컨테이너를 통해 도커 사용방법

[vscode 사용시, Remote Explorer에서 Devcontainer로도 실행 및 접속 가능]

  1. docker start (도커 컨테이너 실행 명령어)
    docker start <컨테이너 이름 or 컨테이너 ID>

    Ex.
    docker start psh

이후 docker 사용시, 상황에 따라 4-1 or 4-2를 사용 (vscode Remote Explorer 혹은 4-1을 권장) [vscode 사용시, Remote Explorer에서 Devcontainer로도 실행 및 접속 가능]

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
  1. docker stop (도커 컨테이너 종료 명령어)
	docker stop <컨테이너 이름>

    Ex.
        docker stop psh
profile
생각정리

0개의 댓글