목차
apache 웹서버 설치 및 실행
도커(Docker)에서 웹 서버를 설정할 때 가장 일반적으로 사용되는 두 가지 소프트웨어는 Apache와 Nginx입니다. 이 중에서 Apache가 더 널리 사용됩니다. Apache 웹 서버는 도커에서는 httpd라는 이름으로 알려져 있습니다. 이는 Apache의 공식적인 프로젝트 이름인 "HTTP Daemon"의 약자입니다.
Docker에서 이미지를 찾을 때 docker search 명령어를 사용합니다. 예를 들어, Apache 웹 서버의 도커 이미지를 찾기 위해서는 httpd라는 이름으로 검색합니다. 명령어에서 --limit=5는 검색 결과의 수를 5개로 제한하라는 의미입니다. 따라서, docker search httpd --limit=5 명령어를 실행하면 Apache 웹 서버의 도커 이미지 중 가장 인기 있거나 추천되는 상위 5개의 이미지를 보여줍니다.
docker search httpd --limit=5
위와 같이 명령을 입력하면 아래와 같이 결과를 확인할 수 있습니다.
ubuntu@ip-172-31-4-29:~$ docker search httpd --limit=5
NAME DESCRIPTION STARS OFFICIAL
httpd The Apache HTTP Server Project 23 [OK]
clearlinux/httpd httpd HyperText Transfer Protocol (HTTP) ser… 5
paketobuildpacks/httpd 0
vulhub/httpd 0
jitesoft/httpd Apache httpd on Alpine linux. 0
위 이미지 중에 httpd를 설치 합니다.
docker run -d httpd
docker run httpd 명령어는 Docker에서 Apache 웹 서버를 설치하고 실행하는 과정을 한 번의 단계로 간소화합니다. 여기서 httpd는 Apache 웹 서버의 Docker 이미지 이름입니다.
- 이미지 다운로드: 만약 로컬 시스템에 httpd 이미지가 없다면, Docker는 자동으로 Docker Hub(또는 설정된 다른 레지스트리)에서 httpd 이미지를 찾아서 다운로드합니다. 이미지는 Apache 웹 서버를 실행하는 데 필요한 모든 파일과 설정을 포함하고 있습니다.
- 컨테이너 생성 및 실행: 이미지 다운로드 후, Docker는 해당 이미지를 기반으로 새로운 컨테이너를 생성하고 실행합니다. 컨테이너는 격리된 환경에서 Apache 웹 서버를 실행합니다. 기본적으로 Apache는 80번 포트를 사용하여 웹 서버를 제공합니다.
- 웹 서버 실행: 컨테이너 내부에서 Apache 웹 서버가 자동으로 시작됩니다. 이 때부터 Apache 웹 서버가 동작하며, 웹 페이지를 호스팅하고 사용자의 웹 요청을 처리할 준비가 됩니다.
-d 를 사용해서 백그라운드로 동작 합니다.
ubuntu@ip-172-31-4-29:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
49c1217b6077 httpd "httpd-foreground" 17 seconds ago Up 16 seconds 80/tcp stupefied_poitras
d7298bb36015 httpd "-d" 25 seconds ago Created 80/tcp busy_mendel
a647da0fcb2b httpd "httpd-foreground" 3 minutes ago Exited (0) 2 minutes ago jovial_hofstadter
b5af3fadfb4e ubuntu "/bin/bash" 19 minutes ago Up 19 minutes goofy_liskov
정상적으로 동작 하고 있음을 확인할 수 있습니다.
apache 웹서버 접속 방법
docker run -d -p 8888:80 httpd
docker run -d -p 8888:80 httpd 명령어에서 -p 8888:80 부분은 Docker 컨테이너의 80번 포트를 호스트의 8888번 포트에 연결하는 포트 매핑을 지정합니다
기본적으로 Apache 웹 서버는 80번 포트를 사용하여 HTTP 트래픽을 처리합니다. 하지만, Docker를 사용할 때 컨테이너 내부의 포트와 호스트 시스템의 포트를 연결해야 외부에서 컨테이너 내부로의 접근이 가능해집니다. 여기서 8888:80이 의미하는 바는 호스트 시스템의 8888번 포트와 컨테이너 내부의 80번 포트를 연결한다는 것입니다. 이렇게 설정함으로써, 사용자는 호스트 시스템의 8888번 포트를 통해 Apache 웹 서버에 접근할 수 있게 됩니다.
호스트 시스템에서 이미 80번 포트를 다른 서비스가 사용하고 있는 경우가 있을 수 있습니다. 이런 상황에서 Docker 컨테이너의 80번 포트를 직접 호스트의 80번 포트에 연결하려고 하면 포트 충돌 문제가 발생할 수 있습니다. 따라서, 다른 번호(예: 8888)를 사용하여 포트를 매핑함으로써 이러한 충돌을 방지할 수 있습니다.
아래와 같이 AWS EC2의 Instance에서 Public IPv4 주소를 확인할 수 있습니다.
여기서 Security groups를 클릭해서 inbound 조건을 아래와 같이 추가 하여야 합니다. 기존의 80에서 8888을 추가해야 8888로 접근이 가능 합니다.
설정후 아래와 같이 정상 접속이 됨을 확인할 수 있습니다.
'웹관련프로그래밍(web programming) > Docker(도커)' 카테고리의 다른 글
[도커] 컨테이너 실행 및 종료, 백그라운드 동작 (start, run, Docker, Container, background) (1) | 2024.03.25 |
---|---|
[도커] Docker Image와 Container란?(이미지, 컨테이너) (1) | 2024.03.25 |
[Docker] 도커 로그인, 로그아웃, 이미지 다운로드(Login, Logout, Image, ID, Password) (1) | 2024.03.13 |
[Docker] 도커 Compose와 Container란? 설치 방법(ubuntu) (0) | 2024.03.11 |