노트와 노트

[Docker] 자주 쓰는 명령어 정리 본문

Docker

[Docker] 자주 쓰는 명령어 정리

gellygelly 2024. 3. 29. 20:54

밥먹듯이 자주 사용하는 도커 기본 명령어 모음집!

 


1. 상태/정보 확인 명령어

컨테이너 목록 출력

docker ps # 현재 가동중인 컨테이너 출력
docker ps -a # 중지된(stop) 컨테이너도 모두 출력
docker ps -s # 컨테이너 SIZE도 같이 출력

 

도커 용량 확인

docker system df # 도커 용량 정보 간략하게 확인
docker system df --verbose # 도커 용량 정보 상세하게 확인

 

도커 이미지 목록 출력

docker images

 


2. 도커 이미지 빌드 및 컨테이너 관련 명령어

도커 파일을 이용해 이미지 빌드하기

docker build -t [IMAGE NAME:TAG] [dockerfile path] 
## docker build -t mmdetection . # tag 미 지정 시 자동으로 latest로 지정 (mmdetection:latest)

 

이미지를 통해 도커 컨테이너 생성하고 시작하기

docker run <option> [IMAGE NAME] <command> # [IMAGE NAME:TAG]로 tag 지정도 가능!

"""
docker run \
	--gpus "device=5" -d -it \
    -p 5000:5000 \
    --name my_mmdetection \
    -v $(pwd)/data:/mmdetection/data my_mmdetection/data \
    mmdetection /bin/bash
"""

 

docker run option 

 

  •  -i, --interactive: 표준 입력(stdin)을 활성화. 컨테이너와 연결(attach)되어 있지 않더라도 표준 입력을 유지한다. 보통 이 옵션을 사용하여 Bash 에 명령을 입력한다. 
  • -t, --tty: TTY 모드(pseudo-TTY). bash를 사용하려면 해당 옵션 설정 를 사용해야 함(옵션 미 설정 시 명령 입력은 가능하나 셀이 표시되지 않음) 

-it 옵션은 기본적으로 항상 넣어준다고 생각하면 편하다!

  • --name: 컨테이너 이름 설정
  • -d, --detach: Detached 모드(데몬 모드)로 컨테이너가 백그라운드로 실행됨
  • -v, --volume: 데이터 볼륨 마운트. 호스트와 컨테이너의 디렉토리를 연결(마운트)하여 파일을 컨테이너 내부에 저장하지 않고 호스트에 저장함.
  • -p: 포트 옵션. -p [외부포트]:[내부포트] 형식으로 사용할 포트를 지정.
  • --gpus: 사용할 GPU 지정 옵션. --gpus all 옵션으로 모든 GPU를 할당할 수도 있고, --gpus 'device=1'로 특정 GPU만 할당해줄 수도 있음(NVIDIA DOCKER 설치 필요 / 설치 가이드: https://github.com/NVIDIA/nvidia-docker

※ docker run 옵션 부분은 아래 블로그 글을 참고해서 작성하였습니다.

https://velog.io/@msjeong97/docker-run-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%82%AC%EC%9A%A9%EB%B2%95

 

docker run 명령어 사용법

docker run은 docker image로 부터 만든 새로운 컨테이너에서 명령어를 실행 시키는 명령어 이다. docker를 사용하면서 가장 많이 접하는 명령어 일텐데, 여러 가지 옵션을 사용하여 컨테이너를 실행 시

velog.io

 

 

도커 컨테이너 접속

docker exec -it [containerID or NAME] /bin/bash # [option] -it: interactive terminal 모드
docker attach [containerID or NAME]

 

exec, attatch 둘 다 실행 중인 컨테이너에 접속하는 명령어이며 둘 중 하나를 선택하여 사용하면 된다. 두 명령어의 차이점은 아래와 같다. 

 

<docker exec, docker attach 명령어 차이>

  exec attach
명령 실행 위치 - 컨테이너 외부에서 작동하여 명령 실행 - 컨테이너 내부에서 명령 실행 및 제어
(현재 사용 중인 터미널의 표준 입출력을 컨테이너에 연결)
컨테이너 내부 터미널 종속 여부 X O
새 프로세스 실행 여부 O
(컨테이너에서 새로운 프로세스를
실행시킬 때 사용)
X
(기존 컨테이너 내부 터미널에
접근하는 방식)
터미널 종료(exit 명령어) 시 - 종료되지 않음
- 컨테이너가 실행되는 동안에만 실행되며, 컨테이너를 다시 시작해도 같이 다시 시작되지 않음
- 함께 종료됨
(Ctrl + P+Q로 종료 시에는 유지)
/bin/bash - container run 명령어 사용 시 /bin/bash
옵션을 주지 않아도 사용 가능
- 컨테이너에 /bin/bash 를 실행시켜서
shell을 띄우기 위한 목적으로도 사용
- container run 명령어 사용 시 /bin/bash
옵션을 주지 않으면 사용 불가

 

 

도커 컨테이너 시작/중지

docker start [CONTAINER ID or CONTAINER NAME] # 컨테이너 시작
docker stop [CONTAINER ID or CONTAINER NAME] # 실행 중인 컨테이너 중지

 

<docker start vs docker run 차이>

 

docker run은 Docker Image를 이용한 컨테이너 생성+컨테이너 시작을 한 번에 하는 명령어이고,

docker start는 docker create [IMAGE] 명령어를 통해 생성한 컨테이너를 시작하는 명령어이다. 

 

 

도커 컨테이너 삭제

docker rm [CONTAINER ID]
docker rm [CONTAINER NAME]
    컨테이너 삭제 시, 실행 중인 컨테이너는 삭제할 수 없으니 우선 docker stop 명령을 통해 삭제하고자 하는 컨테이너를 중지시켜줘야 한다. 

도커 이미지 삭제

docker rmi [REPOSITORY NAME:TAG] 
docker rmi [IMAGE ID]

 

도커 컨테이너로 이미지 생성

docker commit [CONTAINER ID] [IMAGE NAME]

 

컨테이너의 변경 사항을 반영한 새 이미지를 생성하고자 할 때 사용하는 명령어이다. 

해당 명령어를 통해 생성한 새 이미지를 원격 도커 레지스트리에 push하는 것도 가능하다. 


3. 기타 명령어

도커 컨테이너 <-> 호스트 간 데이터 전송

## 호스트 -> 컨테이너 파일 전송

docker cp [HOST의 파일 경로] [CONTAINER NAME]:[CONTAINER 내부 경로]
# docker cp swin_tiny_patch4_window7_224.pth my_mmdetection:/mmdetection/checkpoints/swin_tiny_patch4_window7_224.pth

## 컨테이너 -> 호스트 파일 전송

docker cp [CONTAINER NAME]:[CONTAINER 내부 경로] [HOST의 파일 경로]

 

 

 

'Docker' 카테고리의 다른 글

도커(Docker)란?  (0) 2023.09.19