🟢 1. 컨테이너 실행 및 생성
명령어설명자주 쓰는 옵션/예시
| docker run [옵션] <이미지> |
이미지를 기반으로 새 컨테이너 생성 + 실행 |
-d 백그라운드 실행 --name 컨테이너 이름 지정 -p <호스트포트:컨테이너포트> 포트 매핑 -v <호스트경로:컨테이너경로> 볼륨 마운트 예: docker run -d --name web -p 8080:80 nginx |
| docker create [옵션] <이미지> |
실행하지 않고 컨테이너만 생성 |
실행은 docker start로 따로 함 |
🟡 2. 컨테이너 상태 확인
명령어설명예시
| docker ps |
현재 실행 중인 컨테이너 목록 표시 |
-a 옵션: 중지된 컨테이너까지 모두 보기 |
| docker inspect <컨테이너ID/이름> |
컨테이너의 세부 설정·상태(JSON) 조회 |
docker inspect web |
| docker logs <컨테이너ID/이름> |
컨테이너에서 출력된 로그 확인 |
-f 옵션: 실시간 로그 스트리밍 |
| docker stats |
실행 중인 컨테이너들의 CPU·메모리·네트워크 사용량 모니터링 |
|
🔵 3. 컨테이너 제어(실행·중지·재시작 등)
명령어설명예시
| docker start <컨테이너> |
중지된 컨테이너 시작 |
docker start web |
| docker stop <컨테이너> |
정상 종료 (SIGTERM → SIGKILL) |
docker stop web |
| docker restart <컨테이너> |
컨테이너 재시작 |
docker restart web |
| docker pause <컨테이너> |
컨테이너의 프로세스 일시 중지 |
|
| docker unpause <컨테이너> |
중지된 컨테이너 재개 |
|
| docker kill <컨테이너> |
강제 종료 (SIGKILL) |
빠르게 종료할 때 사용 |
🟠 4. 컨테이너 접근 및 명령 실행
명령어설명예시
| docker exec [옵션] <컨테이너> <명령> |
실행 중인 컨테이너 안에서 명령 실행 |
-it 옵션: 터미널 모드로 접속 docker exec -it web bash → web 컨테이너에 쉘 접속 |
| docker attach <컨테이너> |
현재 터미널을 컨테이너의 표준 입출력에 연결 |
주의: exit 시 컨테이너도 중지될 수 있음 |
🔴 5. 컨테이너 삭제
명령어설명예시
| docker rm <컨테이너> |
중지된 컨테이너 삭제 |
-f 옵션: 실행 중인 컨테이너를 강제로 삭제 |
| docker container prune |
모든 중지된 컨테이너 일괄 삭제 |
-f 옵션: 확인 메시지 없이 바로 삭제 |
📝 추가 꿀팁
- 컨테이너 이름 대신 ID 앞 몇 글자만 입력해도 인식됨: docker stop a1b2c3
- 컨테이너 실행 시 환경 변수 설정:
-
docker run -d -e MYSQL_ROOT_PASSWORD=1234 mysql:8
- 볼륨 마운트로 데이터 보존:
-
docker run -d -v /local/data:/var/lib/mysql mysql:8
- 자주 쓰는 docker run 조합 예시:
-
docker run -d --name myapp -p 8080:80 -v $(pwd):/usr/share/nginx/html nginx
📌 정리
- 컨테이너 실행: docker run, docker start
- 상태 확인: docker ps, docker logs, docker inspect
- 제어: docker stop, docker restart, docker exec
- 삭제: docker rm, docker container prune
이 명령어들을 익히면 컨테이너의 생명주기(Lifecycle) 를 거의 다룰 수 있습니다.
컨테이너 “매핑(mapping)” 이라고 하면 주로 호스트 ↔ 컨테이너 간 리소스 연결을 뜻합니다.
Docker에서 가장 자주 쓰는 매핑은 포트 매핑과 볼륨(디렉토리) 매핑 두 가지입니다.
🔵 1. 포트 매핑 (Port Mapping)
호스트의 포트를 컨테이너의 포트에 연결하여 외부에서 컨테이너의 서비스에 접근할 수 있게 합니다.
명령어
docker run -d -p <호스트포트>:<컨테이너포트> <이미지>
예시설명
| docker run -d -p 8080:80 nginx |
호스트 8080 포트 → 컨테이너 80 포트 연결 → 브라우저에서 http://localhost:8080 접속 가능 |
| docker run -d -p 127.0.0.1:5000:5000 myapp |
특정 호스트 IP(127.0.0.1) 의 5000 → 컨테이너 5000 |
| docker run -d -P nginx |
-P 옵션: Docker가 컨테이너의 EXPOSE된 포트를 랜덤 호스트 포트로 자동 매핑 |
👉 현재 매핑 상태 확인: