Django-MySQL-Labs 프로젝트로 보는 서비스 이름과 컨테이너 이름
도커를 공부하다 보면 "서비스 이름"과 "컨테이너 이름"을 헷갈리기 쉽습니다. 특히 Docker Compose를 사용할 때 두 개념을 정확히 구분하지 못하면 명령어 입력에서 자주 오류가 발생합니다. 이번 글에서는 제가 실습한 django-mysql-labs 프로젝트를 예시로 들어 두 이름의 관계를 정리하겠습니다.
1. docker-compose.yml 안의 서비스 정의
제가 사용한 django-mysql-labs 프로젝트의 docker-compose.yml 파일은 대략 다음과 같은 구조를 가지고 있습니다.
version: "3"
services:
web: # 서비스 이름 ①
build: .
ports:
- "8000:8000"
depends_on:
- db
- nginx
db: # 서비스 이름 ②
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: example
nginx: # 서비스 이름 ③
image: nginx:latest
ports:
- "80:80"
여기서 서비스 이름은 web, db, nginx 입니다.
2. 실제 실행된 컨테이너 이름
위 설정을 기준으로 docker compose up -d 로 실행하면, 컨테이너들이 다음처럼 생성됩니다.
$ docker ps
CONTAINER ID IMAGE STATUS PORTS NAMES
c33cfb669e0 mysql:8 Up 3306/tcp lab_db
91bf4ecf7bf0 django-mysql-labs Up 0.0.0.0:8000->8000/tcp lab_web
7f2cd3aa9bc4 nginx:latest Up 0.0.0.0:80->80/tcp lab_nginx
- lab_web → 서비스 이름 web 에서 만들어진 컨테이너
- lab_db → 서비스 이름 db 에서 만들어진 컨테이너
- lab_nginx → 서비스 이름 nginx 에서 만들어진 컨테이너
여기서 앞의 lab_ 접두어는 프로젝트 디렉터리(django-mysql-labs)에서 따온 것입니다. Docker Compose는 기본적으로 <프로젝트명>_<서비스명> 형식으로 컨테이너 이름을 생성합니다.
3. 명령어 사용 차이
(1) 서비스 이름을 쓰는 경우
docker compose 계열 명령은 서비스 이름을 사용합니다.
docker compose exec web bash # web 서비스 컨테이너 내부 접속
docker compose logs db # db 서비스 로그 확인
docker compose restart nginx # nginx 서비스 재시작
여기서는 lab_web, lab_db, lab_nginx 같은 컨테이너 이름을 쓰면 안 됩니다.
(2) 컨테이너 이름을 쓰는 경우
도커 기본 명령은 컨테이너 이름을 사용합니다.
docker exec -it lab_web bash # web 컨테이너에 접속
docker stop lab_nginx # nginx 컨테이너 중지
docker rm lab_db # db 컨테이너 삭제
즉, docker exec, docker stop, docker rm 같은 기본 도커 명령어에서는 컨테이너 이름을 직접 지정해야 합니다.
4. 한눈에 보는 비교
| 구분 | 예시 이름 | 언제 사용 |
| 서비스 이름 | web, db, nginx | docker compose exec, docker compose logs, docker compose up |
| 컨테이너 이름 | lab_web, lab_db, lab_nginx | docker exec, docker stop, docker ps |
5. 결론
- 서비스 이름은 docker-compose.yml 안에서 정의되는 논리적 이름
- 컨테이너 이름은 실제 실행된 컨테이너의 물리적 이름
- docker compose 계열 명령은 서비스 이름을, docker 기본 명령은 컨테이너 이름을 사용
👉 이번 실습(django-mysql-labs)을 통해 알 수 있듯이, 서비스 이름은 web인데 실행된 컨테이너 이름은 lab_web이 될 수 있습니다. 이 차이를 이해하면 Compose 환경에서 훨씬 헷갈리지 않고 도커를 다룰 수 있습니다.

'컴퓨터 활용 > 노년에 즐기는 코딩' 카테고리의 다른 글
| [AWS] 인스턴스 변경에 대하여 (1) | 2025.09.02 |
|---|---|
| [GIT] 수정 전 상태로 복구하는 방법 (2) | 2025.09.01 |
| Docker Compose에서 서비스 이름과 컨테이너 이름의 차이 (5) | 2025.08.27 |
| 도커 컨테이너 (1) | 2025.08.26 |
| 도커 이미지(Docker Image) (6) | 2025.08.25 |
댓글