본문 바로가기
강의 실습/비전공자도 이해할 수 있는 Docker 입문 실전

[실습] Docker Compose 전체 흐름 느껴보기 (Nginx 설치 및 실행)

by jint 2026. 5. 23.

1. Docker CLI 로 컨테이너 실행

$ docker run -d --name webserver -p 80:80 nginx



2. Docker Compose 로 컨테이너 실행
1) compose.yml 파일 작성
- Windows PowerShell

PS C:\Users\admin> mkdir compose-practice


    디렉터리: C:\Users\admin


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----      2026-05-23   오후 4:14                compose-practice


PS C:\Users\admin> cd .\compose-practice\


- compose-practice/compose.yml

services:
    my-web-server:
        container_name: webserver
        image: nginx
        ports: 
            - 80:80


#1 services: 서비스명:
서비스에 이름 붙임
Docekr Compose 에서 하나의 컨테이너를 서비스(service)라고 함 (여러 개의 서비스를 가질 수 있음)

#2 container_name: 컨테이너명
컨테이너 띄울 때 붙이는 이름
CLI 에서 "--name" 옵션 역할과 동일

#3 image:
컨테이너 실행시킬 때 사용할 이미지 정의
CLI 에서 "docker run 이미지명" 명령어 역할과 동일

#4 ports: - 호스트 포트:컨테이너 포트
포트 매핑 설정 옵션
CLI 에서 "-p" 옵션 역할과 동일

2) compose 파일 실행
#1 포그라운드 실행
- Windows PowerShell

PS C:\Users\admin\compose-practice> ls


    디렉터리: C:\Users\admin\compose-practice


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----      2026-05-23   오후 4:16            124 compose.yml


PS C:\Users\admin\compose-practice> docker compose up
[+] up 11/11
 ✔ Image nginx                      Pulled                                                                                                                                                                   6.3s
 ✔ Network compose-practice_default Created                                                                                                                                                                  0.0s
 ✔ Container webserver              Created                                                                                                                                                                  0.1s
Attaching to webserver
webserver  | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
webserver  | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
webserver  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
webserver  | 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
webserver  | 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
webserver  | /docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
webserver  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
webserver  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
webserver  | /docker-entrypoint.sh: Configuration complete; ready for start up
webserver  | 2026/05/23 07:21:01 [notice] 1#1: using the "epoll" event method
webserver  | 2026/05/23 07:21:01 [notice] 1#1: nginx/1.31.1
webserver  | 2026/05/23 07:21:01 [notice] 1#1: built by gcc 14.2.0 (Debian 14.2.0-19)
webserver  | 2026/05/23 07:21:01 [notice] 1#1: OS: Linux 6.6.114.1-microsoft-standard-WSL2
webserver  | 2026/05/23 07:21:01 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
webserver  | 2026/05/23 07:21:01 [notice] 1#1: start worker processes
webserver  | 2026/05/23 07:21:01 [notice] 1#1: start worker process 29
webserver  | 2026/05/23 07:21:01 [notice] 1#1: start worker process 30
webserver  | 2026/05/23 07:21:01 [notice] 1#1: start worker process 31
webserver  | 2026/05/23 07:21:01 [notice] 1#1: start worker process 32
webserver  | 2026/05/23 07:21:01 [notice] 1#1: start worker process 33
webserver  | 2026/05/23 07:21:01 [notice] 1#1: start worker process 34
webserver  | 2026/05/23 07:21:01 [notice] 1#1: start worker process 35
webserver  | 2026/05/23 07:21:01 [notice] 1#1: start worker process 36
webserver  | 2026/05/23 07:21:01 [notice] 1#1: start worker process 37
webserver  | 2026/05/23 07:21:01 [notice] 1#1: start worker process 38
webserver  | 2026/05/23 07:21:01 [notice] 1#1: start worker process 39
webserver  | 2026/05/23 07:21:01 [notice] 1#1: start worker process 40
webserver  | 2026/05/23 07:21:01 [notice] 1#1: start worker process 41
webserver  | 2026/05/23 07:21:01 [notice] 1#1: start worker process 42
webserver  | 2026/05/23 07:21:01 [notice] 1#1: start worker process 43
webserver  | 2026/05/23 07:21:01 [notice] 1#1: start worker process 44
webserver  | 2026/05/23 07:21:01 [notice] 1#1: start worker process 45
webserver  | 2026/05/23 07:21:01 [notice] 1#1: start worker process 46
webserver  | 2026/05/23 07:21:01 [notice] 1#1: start worker process 47
webserver  | 2026/05/23 07:21:01 [notice] 1#1: start worker process 48
webserver  | 172.18.0.1 - - [23/May/2026:07:21:20 +0000] "GET / HTTP/1.1" 200 896 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36" "-"
webserver  | 2026/05/23 07:21:20 [error] 29#29: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 172.18.0.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "localhost", referrer: "http://localhost/"
webserver  | 172.18.0.1 - - [23/May/2026:07:21:20 +0000] "GET /favicon.ico HTTP/1.1" 404 555 "http://localhost/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36" "-"
# Ctrl + c 로 종료
Gracefully Stopping... press Ctrl+C again to force
Container webserver Stopping


#2 백그라운드 실행
- Windows PowerShell

PS C:\Users\admin\compose-practice> docker compose up -d
[+] up 2/2
 ✔ Network compose-practice_default Created                                                                                                                                                                  0.0s
 ✔ Container webserver              Started                                                                                                                                                                  0.3s

What's next:
    Filter, search, and stream logs from all your Compose services
    in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs?appId=compose-practice


3) compose 실행 현황 확인
- Windows PowerShell

PS C:\Users\admin\compose-practice> docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS              PORTS                                 NAMES
d726a409fd0b   nginx     "/docker-entrypoint.…"   4 minutes ago   Up About a minute   0.0.0.0:80->80/tcp, [::]:80->80/tcp   webserver
PS C:\Users\admin\compose-practice> docker compose ps
NAME        IMAGE     COMMAND                   SERVICE         CREATED         STATUS              PORTS
webserver   nginx     "/docker-entrypoint.…"   my-web-server   4 minutes ago   Up About a minute   0.0.0.0:80->80/tcp, [::]:80->80/tcp


4) 브라우저에서 확인
브라우저에서 http://localhost:80/ 접속

 

Docker Compose 로 컨테이너 실행 확인


5) compose 로 실행된 컨테이너 중지 후 삭제
- Windows PowerShell

PS C:\Users\admin\compose-practice> docker compose down
[+] down 2/2
 ✔ Container webserver              Removed                                                                                                                                                                  0.4s
 ✔ Network compose-practice_default Removed                                                                                                                                                                  0.3s
PS C:\Users\admin\compose-practice> docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
PS C:\Users\admin\compose-practice> docker compose ps
NAME      IMAGE     COMMAND   SERVICE   CREATED   STATUS    PORTS
PS C:\Users\admin\compose-practice> docker ps -a
CONTAINER ID   IMAGE             COMMAND                  CREATED      STATUS                  PORTS     NAMES
47c438563cdb   my-server         "/bin/bash -c 'sleep…"   5 days ago   Exited (0) 5 days ago             nice_matsumoto
10b3825e00f9   my-node-server    "/bin/bash -c 'sleep…"   9 days ago   Exited (0) 9 days ago             pensive_ride
e8f1ab86997c   my-jdk17-server   "/bin/bash -c 'sleep…"   9 days ago   Exited (0) 9 days ago             tender_ride



참고링크 : https://www.inflearn.com/course/%EB%B9%84%EC%A0%84%EA%B3%B5%EC%9E%90-docker-%EC%9E%85%EB%AC%B8-%EC%8B%A4%EC%A0%84?cid=334085

 

비전공자도 이해할 수 있는 Docker 입문/실전| JSCODE 박재성 - 인프런 강의

현재 평점 4.9점 수강생 14,482명인 강의를 만나보세요. 비전공자 입장에서도 쉽게 이해할 수 있고, 실전에서 바로 적용 가능한 Docker 입문/실전 강의를 만들어봤습니다! Docker 기본 개념, Spring Boot를

www.inflearn.com

댓글