Docker는 이미지를 기반으로 컨테이너를 실행하고, 컨테이너 안에서 애플리케이션을 구동합니다.
하지만 실제 개발·운영 환경에서는 단순히 실행만 하는 것이 아니라,
상태 확인·로그 조회·접속·종료·삭제 같은 다양한 조작이 필요합니다.
이번 글에서는 docker run, docker ps, docker logs, docker exec, docker stop, docker rm 등
필수 명령어와 함께 자주 쓰이는 옵션을 정리했습니다.
1. 컨테이너 실행: docker run
가장 기본적인 명령어입니다. 이미지를 컨테이너로 띄울 때 사용합니다.
docker run -d -p 8080:80 nginx
-d: 백그라운드(detached) 모드 실행 → 터미널을 점유하지 않음-p: 로컬 포트와 컨테이너 포트를 연결 (호스트:컨테이너)nginx: 실행할 이미지 이름
위 명령어는 nginx 웹서버를 컨테이너에서 실행하고, 로컬 8080 포트를 컨테이너 80번 포트와 연결합니다.
브라우저에서 http://localhost:8080 접속 시 nginx 기본 페이지가 출력됩니다.
2. 실행 중인 컨테이너 확인: docker ps
현재 실행 중인 컨테이너 목록을 확인합니다.
docker ps
출력 예시는 다음과 같습니다:
CONTAINER ID IMAGE COMMAND STATUS PORTS NAMES
a1b2c3d4e5f6 nginx "/docker-entrypoint.…" Up 2 minutes 0.0.0.0:8080->80/tcp nginx-test
CONTAINER ID: 컨테이너 고유 IDIMAGE: 실행된 이미지 이름PORTS: 연결된 포트 정보NAMES: 컨테이너 이름 (자동 생성되거나--name옵션으로 지정 가능)
모든 컨테이너(중지 포함)를 보려면 docker ps -a를 사용합니다.
3. 로그 확인: docker logs
컨테이너에서 실행된 애플리케이션의 로그를 확인할 수 있습니다.
서버 디버깅 시, 로그 확인은 필수입니다.
docker logs nginx-test
- 애플리케이션 출력(
stdout,stderr)을 그대로 보여줍니다. - 실시간 로그를 보고 싶으면
-f옵션을 붙입니다.
docker logs -f nginx-test
4. 컨테이너 내부 접속: docker exec
실행 중인 컨테이너에 직접 들어가 명령어를 실행할 수 있습니다.
컨테이너 안의 파일 구조를 확인하거나 환경 변수를 점검할 때 유용합니다.
docker exec -it nginx-test bash
-i: 상호작용 모드 (interactive)-t: 터미널 할당 (tty)bash: 실행할 셸
컨테이너 내부에 bash가 없을 경우 sh를 사용할 수 있습니다.
docker exec -it nginx-test sh
5. 컨테이너 종료 및 삭제: docker stop, docker rm
더 이상 필요 없는 컨테이너는 종료하고 삭제할 수 있습니다.
운영 환경에서는 컨테이너 이름을 명확히 정해두는 것이 관리에 도움이 됩니다.
docker stop nginx-test
docker rm nginx-test
docker stop: 실행 중인 컨테이너를 종료docker rm: 종료된 컨테이너를 삭제- 실행 중인 컨테이너를 강제 삭제하려면
docker rm -f 컨테이너이름을 사용합니다.
6. 자주 쓰는 옵션 요약
-d: 백그라운드 모드-p 호스트:컨테이너: 포트 매핑-it: 터미널 접속--name: 컨테이너 이름 지정--rm: 실행 종료 시 자동 삭제
docker run -d -p 3000:3000 --name myapp --rm node:20 node server.js
→ 실행 중에는 myapp이라는 이름으로 접근할 수 있고, 종료되면 컨테이너가 자동 삭제됩니다.
컨테이너를 다루는 데 필요한 명령어는 몇 가지밖에 되지 않지만, 활용도는 매우 높습니다.
docker run으로 실행하고docker ps로 상태를 확인하며docker logs로 동작을 점검하고docker exec으로 내부에 접속해 문제를 해결하고- 필요할 때
docker stop과docker rm으로 정리
이 기본 흐름만 익혀도 컨테이너 운영의 80%는 해결할 수 있습니다.
나머지는 네트워크, 볼륨, 오케스트레이션(Kubernetes) 같은 고급 기능을 차차 익히면 됩니다.
'개발정리 (docker)' 카테고리의 다른 글
| [docker] Docker 컨테이너의 실체: 리눅스 네임스페이스와 cgroups (0) | 2025.09.26 |
|---|---|
| [docker] Docker 네트워크 이해하기: 포트 매핑이 필요한 이유 (0) | 2025.09.25 |
| [docker] 내 애플리케이션을 Docker 이미지로 만들기 (0) | 2025.09.22 |
| [docker] Dockerfile 제대로 이해하기: 실무에서 자주 쓰는 명령어 정리 (0) | 2025.09.19 |
| [docker] Docker의 장점과 단점 (0) | 2025.09.18 |