웹관련프로그래밍(web programming)/Docker(도커)

[도커] apache 웹서버 설치 및 동작(Web server, Docker)

끄적끄적아무거나 2024. 3. 27. 08:43
반응형

 

목차

     

     

     

     

    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 이미지 이름입니다.

     

    1. 이미지 다운로드: 만약 로컬 시스템에 httpd 이미지가 없다면, Docker는 자동으로 Docker Hub(또는 설정된 다른 레지스트리)에서 httpd 이미지를 찾아서 다운로드합니다. 이미지는 Apache 웹 서버를 실행하는 데 필요한 모든 파일과 설정을 포함하고 있습니다.
    2. 컨테이너 생성 및 실행: 이미지 다운로드 후, Docker는 해당 이미지를 기반으로 새로운 컨테이너를 생성하고 실행합니다. 컨테이너는 격리된 환경에서 Apache 웹 서버를 실행합니다. 기본적으로 Apache는 80번 포트를 사용하여 웹 서버를 제공합니다.
    3. 웹 서버 실행: 컨테이너 내부에서 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로 접근이 가능 합니다. 

     

     

     

     

    설정후 아래와 같이 정상 접속이 됨을 확인할 수 있습니다.

     

    반응형