
오늘은 아파치 컨테이너를 설정하고 통신하는 방법에 대해 알아보겠습니다. 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
'IT기술 > 도커 (docker)' 카테고리의 다른 글
| Docker 컨테이너 유형별 완벽 가이드: 운영체제부터 데이터베이스까지 (4) | 2025.07.05 |
|---|---|
| Docker 이미지 삭제 완벽 가이드: 효율적인 스토리지 관리 방법 (2) | 2025.07.04 |
| 도커 컨테이너의 생성, 실행, 정지, 삭제 방법 정리 (6) | 2025.04.30 |
| 도커 컨테이너의 기본 사용 방법 – 명령어 구조와 실전 활용 가이드 (8) | 2025.04.29 |
| [docker] 도커 엔진 시작 및 종료 – 자동 실행과 컨테이너 자동 시작까지 (4) | 2025.04.28 |