Ⅰ. docker 자주 쓰는 명령어
| 명령어 | 설명 | 사용법 |
| docker pull | Docker Hub 또는 다른 레지스트리에서 이미지를 다운로드 | docker pull <image-name> 예) docker pull nginx:1.27-alpine |
| docker images | 로컬에 저장된 이미지 목록 확인 | docker images |
| docker rmi | 특정 이미지 삭제 | docker rmi <image-id> 강제 삭제: docker rmi -f <image-id> |
| docker build | Dockerfile로 이미지 빌드 | docker build -t <name>:<tag> . |
| docker tag | 이미지에 새 태그 부여(레지스트리 push 전 단계) | docker tag myapp:1.0 myreg/myapp:1.0 |
| docker push | 이미지를 레지스트리에 업로드 | docker push myreg/myapp:1.0 |
ⅰ. docker 이미지 다운로드
| 명령어 | 설명 | 사용 방법 |
| docker pull | Docker Hub 또는 다른 레지스트리에서 이미지를 다운로드합니다. | docker pull <image-name> |

1) Docker Hub 이미지 다운로드
Docker Hub Container Image Library | App Containerization
Increase your reach and adoption on Docker Hub With a Docker Verified Publisher subscription, you'll increase trust, boost discoverability, get exclusive data insights, and much more.
hub.docker.com
2) AWS 이미지 다운로드
ECR Public Gallery
Amazon ECR Public Gallery is a website that allows anyone to browse and search for public container images, view developer-provided details, and see pull commands
gallery.ecr.aws
ⅱ. docker 이미지 목록 확인
| 명령어 | 설명 | 사용 방법 |
| docker images | 로컬에 저장된 이미지 목록을 확인합니다. | docker images |

ⅲ. docker 이미지 삭제
| 명령어 | 설명 | 사용 방법 |
| docker rmi | 특정 이미지를 삭제합니다. | docker rmi <image-name> docker rmi <image-id> |

ⅳ. docker 컨테이너 상태 확인
| 명령어 | 설명 | 사용 방법 |
| docker ps -a | 모든 컨테이너(실행 중이지 않은 것 포함)의 목록을 확인합니다. | docker ps -a |

| 명령어 | 설명 | 사용 방법 |
| docker ps | 현재 실행 중인 컨테이너 목록을 확인합니다. | docker ps |

ⅴ. docker 컨테이너 생성 및 실행
| 명령어 | 설명 | 사용 방법 |
| docker run | 새로운 컨테이너를 생성하고 실행합니다. | docker run <options> <image-name> Ex) docker run -d -p 80:80 nginx |

| 옵션명 | 설명 |
| -d | 컨테이너를 백그라운드에서 실행. |
| -p | 호스트와 컨테이너 간 포트 매핑. 형식은 호스트포트:컨테이너포트입니다. |
| --name | 컨테이너 이름 지정 |
| -v | 볼륨을 마운트하여 호스트 디렉토리를 컨테이너 내부에 연결 |
| -e |
환경 변수를 설정하여 컨테이너 내부에서 사용할 값을 전달 |
| -i (interactive) | 입력을 활성화해서 사용자의 입력을 컨테이너에 전달 |
| -t (tty) | 터미널 환경을 할당해서 사용자가 출력 결과를 보기 쉽게 포맷 |
ⅵ. docker 컨테이너 연결 및 관리
※ docker attach에서 연결을 끊으면, 연결된 프로세스가 종료되거나 컨테이너도 함께 종료될 수 있습니다. 이를 방지하기 위해서는 docker run -d로 띄운 컨테이너에 접속할 때 attach 대신 exec -it을 쓰는 것이 권장됩니다.
| 구분 | docker exec | docker attach |
| 성격 | 새로운 프로세스 실행 | 기존 실행 중인 프로세스에 연결 |
| PID (프로세스 ID) | 새로운 PID 할당 | PID 1 (메인 프로세스)에 연결 |
| 안전성 | 높음 (빠져나와도 컨테이너 유지) | 낮음 (잘못 종료 시 컨테이너 중지) |
| 활용 예시 | 컨테이너 내부 파일 수정, 패키지 설치 | 실행 중인 서버의 실시간 로그 확인 |
1) docker attach
| 명령어 | 설명 | 사용 방법 |
| docker attach | 실행 중인 컨테이너의 터미널에 연결되어 컨테이너 내에서 명령어를 실행합니다. | docker attach <container-id> |

* 실행 중인 컨테이너를 접속할 수 있습니다.
(Ctrl + p) 누른 후 (Ctrl+q) 컨테이너를 빠져 나올 수 있습니다.
2) docker exec
| 명령어 | 설명 | 사용 방법 |
| docker exec | 실행 중인 컨테이너에서 명령어를 실행합니다. | docker exec -it <container-id> <command> Ex) docker exec <container-id> /bin/bash |

ⅶ. docker 컨테이너 실행 관리
| 명령어 | 설명 | 사용 방법 |
| docker stop | 실행 중인 컨테이너를 중지합니다. | docker stop <container-id> |
| docker start | 중지된 컨테이너를 다시 시작합니다. | docker start <container-id> |
| docker restart | 컨테이너를 중지한 후 다시 시작합니다. | docker restart <container-id> |

ⅷ. docker 컨테이너 삭제
| 명령어 | 설명 | 사용 방법 |
| docker rm | 특정 컨테이너를 삭제합니다. | 서비스 종료된 컨테이너 삭제 docker rm <container-id> 서비스 실행 중인 컨테이너 강제 삭제 docker rm -f <container-id> |


ⅸ. docker 컨테이너 로그 확인
| docker logs | 컨테이너의 로그를 확인합니다. | docker logs <container-id> |

Ⅱ. docker 디스크 및 네트워크 관리
ⅰ. docker 볼륨이란?
컨테이너는 기본적으로 휘발성이라 삭제되면 내부 데이터도 함께 사라집니다. 볼륨은 컨테이너와 분리된 저장 공간을 제공해 데이터를 영구적으로 보관할 수 있게 해주며, 여러 컨테이너 간 데이터 공유에도 사용됩니다.
ⅱ. docker 볼륨 주요 명령어
| 명령어 | 설명 | 사용 방법 |
| docker volume ls | 생성된 볼륨 목록을 확인합니다. | docker volume ls |
| docker volume create | 새로운 볼륨을 생성합니다. | docker volume create <volume-name> |
| docker volume inspect | 볼륨의 상세 정보(마운트 경로, 드라이버 등)를 확인합니다. | docker volume inspect <volume-name> |
| docker volume rm | 특정 볼륨을 삭제합니다. | docker volume rm <volume-name> |
| docker volume prune | 사용하지 않는(미연결) 볼륨을 일괄 삭제합니다. | docker volume prune |

ⅲ. docker 볼륨 마운트 종류
| 종류 | 설명 | 예시 |
| Volume | Docker가 관리하는 영역(/var/lib/docker/volumes)에 저장. 권장 방식. | -v myvol:/data |
| Bind Mount | 호스트의 특정 경로를 직접 컨테이너에 연결. | -v /home/user/data:/data |
| tmpfs | 메모리에만 저장(컨테이너 종료 시 삭제). | --tmpfs /data |
ⅳ. docker 네트워크란?
Docker는 컨테이너 간 통신을 위해 가상 네트워크를 제공합니다. 같은 네트워크에 속한 컨테이너끼리는 컨테이너 이름을 호스트명처럼 사용해 서로 통신할 수 있습니다.
ⅴ. docker 네트워크 주요 명령어
| 명령어 | 설명 | 사용 방법 |
| docker network ls | 네트워크 목록을 확인합니다. | docker network ls |
| docker network create | 새로운 네트워크를 생성합니다. | docker network create <network-name> |
| docker network inspect | 네트워크 상세 정보(연결된 컨테이너, 서브넷 등)를 확인합니다. | docker network inspect <network-name> |
| docker network connect | 실행 중인 컨테이너를 네트워크에 연결합니다. | docker network connect <network-name> <container-id> |
| docker network disconnect | 컨테이너를 네트워크에서 분리합니다. | docker network disconnect <network-name> <container-id> |
| docker network rm | 네트워크를 삭제합니다. | docker network rm <network-name> |
| docker network prune | 사용하지 않는 네트워크를 일괄 삭제합니다. | docker network prune |

ⅵ. docker 네트워크 드라이버 종류
| 드라이버 | 설명 | 사용 시나리오 |
| bridge | 기본값. 단일 호스트 내 컨테이너 간 통신용 가상 네트워크. | 로컬 개발, 단일 서버 환경 |
| host | 호스트의 네트워크를 그대로 사용(포트 매핑 불필요). | 네트워크 성능이 중요한 경우 |
| none | 네트워크 비활성화. 외부와 격리된 컨테이너. | 보안이 필요한 작업 |
| overlay | 여러 Docker 호스트(Swarm)에 걸친 컨테이너 간 통신. | 클러스터, 분산 환경 |
| macvlan | 컨테이너에 MAC 주소를 부여해 물리 네트워크에 직접 연결. | 레거시 네트워크 통합 |
'시스템(Linux)' 카테고리의 다른 글
| Docker 와 Kubernetes 비교 Ⅱ (1) | 2024.10.05 |
|---|---|
| Docker 와 Kubernetes 비교 Ⅰ (1) | 2024.10.04 |
| 인터넷 안 되는 리눅스에 Docker 설치하기 (RPM 오프라인 설치) (1) | 2024.10.02 |
| 리눅스 운영체제에서 디스크 타입이 SATA, SSD, SAS인지 확인하는 방법에 대해 알아보겠습니다. (0) | 2024.09.25 |
| Emacs 에 대해 알아보겠습니다. (1) | 2024.09.23 |