inblog logo
|
DailyCoding
    Docker

    2. Docker + Nginx 명령어 실습

    박은서's avatar
    박은서
    May 01, 2026
    2. Docker + Nginx 명령어 실습
    Contents
    🐳 Docker + Nginx 실습 노트 (프리뷰)🖥️ 윈도우 세상 (Host OS 환경)🐧 컨테이너 내부 작업 (Linux)🌐 브라우저 확인📁 웹 파일 위치 확인✏️ 파일 수정🔄 변경 확인📘 commit & push🚨 컨테이너 실행 문제 케이스📌 핵심 개념 요약

    🐳 Docker + Nginx 실습 노트 (프리뷰)

    🖥️ 윈도우 세상 (Host OS 환경)

    1. 컨테이너 실행 (Windows 환경)

    docker run -dit -p 8000:80 ubuntu
    • 우분투 취신 이미지를 다운로드하고 컨테이너로 실행
    • d : 백그라운드 실행 (detached)
    • i : 표준 입력 유지
    • t : 터미널 할당
    • p 8000:80 : 포트 포워딩
      • ➡️ 내 PC(윈도우) 8000번 포트로 접속하면 → 컨테이너 80번 포트(Nginx 기본 포트)로 연결
    ⚠️
    docker pull vs docker run
    구분
    docker pull
    docker run
    역할
    이미지 다운로드
    컨테이너 생성 + 실행
    실행 여부
    ❌ 실행 안 함
    ✅ 실행됨
    이미지 없을 때
    다운로드만
    자동 pull 후 실행
    결과
    이미지 저장
    컨테이너 생성

    2. 실행 중인 컨테이너 확인

    docker ps
    • 현재 실행 중인 컨테이너 목록 확인

    3. 컨테이너 내부 접속 (Linux 환경 진입)

    docker exec -it [컨테이너ID] bash
    • 실행 중인 우분투 컨테이너의 문을 열고 들어가서 컨테이너 안의 리눅스 쉘로 진입

    🐧 컨테이너 내부 작업 (Linux)

    4. 패키지 목록 업데이트

    apt update
    • 패키지 목록(설치 메뉴판)을 최신 상태로 동기화
    • 가장 먼저 해야 할 필수 작업

    5. nginx 검색

    apt-cache search nginx | grep nginx
    • 설치 가능한 nginx 관련 패키지 확인
    • 동기화된 메뉴판에서 nginx라는 단어가 포함된 패키지를 찾아 출력
    • grep은 검색 필터링 역할

    6. nginx 설치

    apt install -y nginx
    • Nginx 웹 서버를 설치합니다.
    • -y : 설치 중간의 질문에 자동 동의 (-y를 하지 않으면 중간에 터미널 멈춤)

    7. 프로세스 확인

    ps -ef
    • 현재 리눅스 안에서 실행 중인 프로세스 목록 확인

    8. 포트 확인 도구 설치

    apt install -y net-tools
    • 네트워크 포트 상태를 확인하는 명령어(netstat)를 쓰기 위해 네트워크 관리 도구를 설치합니다.

    9. 포트 상태 확인

    netstat -nlpt
    • 현재 열려 있는 포트 확인
      • 아직 Nginx를 켜지 않았기 때문에 80번 포트 없음
    • n : 숫자 형태로 표시
    • l : LISTEN 상태
    • p : 프로세스 정보 포함
    • t : TCP

    10. nginx 실행

    nginx
    • 설치된 Nginx 웹 서버를 실행

    11. nginx 실행 확인

    netstat -nlpt
    • Nginx 실행 후, 80번 포트가 정상적으로 열려서 접속을 기다리고 있는지 다시 확인

    🌐 브라우저 확인

    http://localhost:8000
    • Docker 포트 포워딩
      • 내 PC 8000 → 컨테이너 80
    • nginx 기본 페이지 확인 가능

    📁 웹 파일 위치 확인

    12. index.html 찾기

    find / -name index.html
    • 최상위 경로(/)부터 시작해서 Nginx의 메인 화면인 index.html 파일 위치 찾음

    13. 웹 루트 디렉토리 이동

    cd /var/www/html ls
    • 찾아낸 경로(Nginx의 기본 웹 문서 보관 폴더)로 이동(cd)
    • 폴더 안에 index.html 파일이 잘 있는지 목록 확인

    ✏️ 파일 수정

    14. nano 설치

    apt install -y nano
    • 파일 내용을 터미널에서 바로 수정하기 위해, 가볍고 직관적인 텍스트 에디터 nano 설치

    15. 파일 수정

    nano index.html
    • 수정 후 저장 및 종료
      • Ctrl + X (종료)
      • Y (저장 동의)
      • Enter (원래 이름으로 덮어쓰기)

    🔄 변경 확인

    http://localhost:8000
    → 수정된 내용이 브라우저에 반영됨

    📘 commit & push

    16. 컨테이너 → 이미지 저장

    docker commit faa5 parkcoding/nginx:latest
    • 현재 컨테이너 상태를 이미지로 저장
    • Docker Hub에 올릴 준비

    17. Docker Hub 로그인

    docker login

    18. 이미지 업로드

    docker push parkcoding/nginx:latest

    🚨 컨테이너 실행 문제 케이스

    19. 기본 실행 (문제 발생)

    docker run -d -p 8000:80 parkcoding/nginx:latest
    • 문제
      • 실행 후 바로 종료됨
    • 이유
      • 실행할 메인 프로세스 없음 (CMD 없음)

    20. bash로 실행

    docker run -dit -p 8000:80 parkcoding/nginx:latest bash
    • 결과
      • 컨테이너는 유지됨
      • ❌ nginx 실행 안 됨

    21. nginx 실행 (문제 발생)

    docker run -dit -p 8000:80 parkcoding/nginx:latest nginx
    • 문제
      • 컨테이너 바로 종료됨
    • 이유
      • nginx가 daemon으로 실행됨 (백그라운드)
      • 부모 프로세스는 백그라운드에서 nginx를 실행하고 바로 종료
        • → 컨테이너는 할 일이 없다고 판단하고 종료

    22. 해결 방법 (핵심 ⭐)

    docker run -dit -p 8000:80 parkcoding/nginx:latest nginx -g "daemon off;"
    • 결과
      • nginx 실행됨 (포그라운드)
      • 컨테이너 유지됨

    📌 핵심 개념 요약

    1. Docker

    • 컨테이너로 독립된 리눅스 환경 실행

    2. 포트 포워딩

    • 외부(Host) ↔ 내부(Container) 연결

    3. nginx

    • 웹 서버 (80 포트 사용)

    4. /var/www/html

    • nginx의 기본 웹 문서 위치

    5. netstat

    • 포트 및 서비스 상태 확인

    6. 컨테이너 종료 조건

    컨테이너 종료 = PID 1 프로세스 종료
    • 커맨드 없으면 → 바로 종료
    • 실행할 프로세스가 없으면 → 종료

    7. 컨테이너 유지 조건

    • 포그라운드 프로세스 필요
    • 대표 예:
      • bash
      • nginx (daemon off)

    8. nginx 기본 동작

    • 기본 = 백그라운드 (daemon)
    • 해결 = 포그라운드 실행

    9. docker commit 특징

    • 포함
      • 설치한 패키지
      • 수정한 파일
      • 생성한 파일
    • 제외
      • 볼륨 데이터
    • 주의
      • CMD / ENTRYPOINT 자동 설정 안 됨
    💡
    이번 실습은 인프라 환경을 구축하는 A to Z를 수동으로 작업
    (실무) 이 모든 타이핑 과정을 Dockerfile이라는 문서 하나에 적어두고 자동화해서 사용
    명령어(GEMINI)
    Share article
    Contents
    🐳 Docker + Nginx 실습 노트 (프리뷰)🖥️ 윈도우 세상 (Host OS 환경)🐧 컨테이너 내부 작업 (Linux)🌐 브라우저 확인📁 웹 파일 위치 확인✏️ 파일 수정🔄 변경 확인📘 commit & push🚨 컨테이너 실행 문제 케이스📌 핵심 개념 요약

    DailyCoding

    RSS·Powered by Inblog