IT기술/도커 (docker)

Docker Apache 컨테이너 완벽 가이드: 웹 서버 설정부터 외부 통신까지

후스파 2025. 7. 4. 13:56
반응형

오늘은 아파치 컨테이너를 설정하고 통신하는 방법에 대해 알아보겠습니다. Docker를 이용하여 아파치 웹 서버를 실행하고, 이를 통해 웹 브라우저에서 접근하는 방법을 상세히 설명드리겠습니다.


아파치 컨테이너 세팅

아파치 컨테이너를 실행하면 웹 브라우저를 통해 웹 페이지에 접근할 수 있습니다. 하지만 컨테이너 접근 설정은 컨테이너 생성 후에는 변경할 수 없으므로, docker run 명령어를 사용할 때 정확하게 설정해야 합니다. 만약 이미 생성된 컨테이너가 내부에서만 동작하도록 설정되어 있다면, 해당 컨테이너를 삭제하고 다시 생성해야 합니다.

Apache httpd 공식 이미지 특징

  • 크로스 플랫폼 지원: 다양한 브라우저, OS, CPU 아키텍처에서 동작
  • 기본 설정 포함: Apache HTTP Server의 기본 구성이 포함되어 있음
  • 확장 가능성: SSL/HTTPS, mod_perl 등 고급 모듈 지원
  • 경량화: 필요한 최소 구성 요소만 포함

컨테이너 통신 설정

컨테이너를 외부에서 접근하기 위해서는 포트 설정이 필요합니다. 이를 통해 특정 포트 번호로 접근할 수 있습니다. 이를 쉽게 이해하기 위해 집에 비유해보면, IP 주소는 집 주소와 같고, 포트는 집의 문과 같은 역할을 합니다.

포트 매핑 개념

프로토콜에 따라 약속된 통신을 할 때는 1000번 이하의 포트 번호가 일반적으로 사용됩니다:

  • 웹(HTTP): 80번 포트
  • HTTPS: 443번 포트
  • 메일(SMTP): 25번 포트
  • SSH: 22번 포트

포트 매핑 명령어

호스트의 포트번호와 컨테이너 포트번호를 연결하기 위해 -p 옵션을 사용합니다:

docker run -p 8080:80 httpd

주의사항:

  • 호스트 포트 번호는 사용되지 않는 번호를 자유롭게 선택 가능
  • 1000번대 하위 번호는 시스템에서 사용되므로 이후 번호 선택 권장
  • 하나의 호스트 포트에는 하나의 컨테이너만 연결 가능
  • 리버스 프록시를 이용하면 서버 이름으로 구분하여 구성 가능

통신 가능한 컨테이너 생성

이제 외부에서 접근할 수 있는 아파치 컨테이너를 생성해보겠습니다. 브라우저에서 접속해 아파치 초기 화면이 나타나는지 확인해봅시다.

컨테이너 생성 및 실행

다음 명령어를 사용하여 아파치 컨테이너를 생성하고 실행합니다:

docker run --name apaex02 -d -p 8080:80 httpd

옵션 설명:

  • --name apaex02: 컨테이너 이름을 apaex02로 지정합니다
  • -d: 백그라운드 모드(detached)로 실행합니다
  • -p 8080:80: 호스트 포트 8080과 컨테이너 포트 80을 연결합니다
  • httpd: 아파치 공식 이미지를 지정합니다

실행 후 다음과 같은 컨테이너 ID가 출력됩니다:

7f94fb51f6e912dc811dddf177139b768f65b64ad2e3daec22ea08b51c23384c

컨테이너 상태 확인

컨테이너의 상태를 확인하려면 다음 명령어를 사용합니다:

docker ps -a

출력 예시:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7f94fb51f6e9 httpd "httpd-foreground" 3 minutes ago Up 3 minutes 0.0.0.0:8080->80/tcp apaex02

웹 페이지 접속

웹 브라우저를 열고 http://localhost:8080에 접속하여 아파치 초기 화면이 나타나는지 확인합니다.

정상 동작 시 표시되는 내용:

  • "It works!" 메시지
  • Apache HTTP Server 기본 페이지

고급 설정 옵션

볼륨 마운트를 통한 커스텀 웹 페이지 서빙:

# macOS/Linux
docker run -d --name my-apache-app -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4

# Windows (PowerShell)
docker run -d --name my-apache-app -p 8080:80 -v "$pwd":/usr/local/apache2/htdocs/ httpd:2.4

환경 변수 설정:

docker run -d --name apache-custom -p 8080:80 -e APACHE_LOG_LEVEL=debug httpd:2.4

컨테이너 종료 및 삭제

테스트가 끝난 후, 컨테이너를 종료하고 삭제할 수 있습니다.

컨테이너 종료

컨테이너를 종료하려면 다음 명령어를 사용합니다:

docker stop apaex02

컨테이너 삭제

컨테이너를 삭제하려면 다음 명령어를 사용합니다:

docker rm apaex02

한 번에 종료 및 삭제

docker rm -f apaex02

컨테이너 목록 확인

마지막으로 전체 컨테이너 목록을 확인하려면 다시 docker ps -a 명령어를 사용합니다:

docker ps -a

실무 활용 팁

SSL/HTTPS 설정

보안이 중요한 애플리케이션의 경우 SSL 인증서를 통한 HTTPS 연결이 필요합니다:

docker run -d --name apache-ssl -p 443:443 -p 80:80 \
  -v /path/to/ssl:/usr/local/apache2/conf/ssl \
  httpd:2.4

커스텀 Apache 설정

기본 설정을 추출하여 수정할 수 있습니다:

# 기본 설정 파일 추출
docker run --rm httpd:2.4 cat /usr/local/apache2/conf/httpd.conf > my-httpd.conf

# 커스텀 설정으로 컨테이너 실행
docker run -d --name apache-custom -p 8080:80 \
  -v "$PWD/my-httpd.conf:/usr/local/apache2/conf/httpd.conf" \
  httpd:2.4

로그 모니터링

# 실시간 로그 확인
docker logs -f apaex02

# 특정 시간 이후 로그 확인
docker logs --since="2025-07-04T13:00:00" apaex02

컨테이너 내부 접근

# 컨테이너 내부 쉘 접근
docker exec -it apaex02 /bin/bash

# 특정 명령어 실행
docker exec apaex02 ls -la /usr/local/apache2/htdocs/

마치며

이렇게 아파치 컨테이너를 설정하고, 외부에서 접근할 수 있도록 포트를 설정하는 방법에 대해 알아보았습니다. Docker를 활용하여 손쉽게 웹 서버를 운영할 수 있으니, 다양한 프로젝트에 활용해보시기 바랍니다.

핵심 포인트:

  • 포트 매핑(-p 옵션)을 통한 외부 접근 설정
  • 컨테이너 생성 시 네트워크 설정의 중요성
  • 볼륨 마운트를 통한 커스텀 콘텐츠 서빙
  • SSL/HTTPS 설정을 통한 보안 강화
  • 로그 모니터링과 디버깅 방법

Docker의 컨테이너화 기술을 통해 Apache 웹 서버를 빠르고 안정적으로 배포할 수 있으며, 마이크로서비스 아키텍처에서도 효과적으로 활용할 수 있습니다.

 

 

 

도커 컨테이너의 생성, 실행, 정지, 삭제 방법 정리

도커(Docker)는 컨테이너 기반의 애플리케이션 배포와 관리를 간편하게 해주는 플랫폼입니다. 컨테이너의 생성, 실행, 정지, 삭제는 도커 관리의 핵심입니다. 아래에서 각 단계별 명령어와 사용법

hoosfa.tistory.com

 

반응형