[Docker 기본 명령어] 5. docker run의 -p 옵션과 컨테이너로 웹 서버 apache 사용해보기
반갑습니다!
docker run 명령어에 조금은 익숙해졌으니,
웹서버를 docker run으로 구동시키면서 조금 더 심화하며 연습해보겠습니다 ^^
웹서버에는 크게 두 가지 프로그램이 많이 사용되는데요
apache와 nginx입니다 ^^
이번에는 apache 웹 서버를 docker로 구동해보면서
docker run의 사용 예와 관련 옵션을 더 이해해보겠습니다 !
이번에는 apache 웹 서버 이미지를 가지고 연습해보겠습니다
$ docker search httpd 명령어를 입력하니 공식 이미지가 보입니다 ^^!
이전에 사용한 방법으로는 $ docker pull http 명령어를 통해 이미지를 다운 받은 다음에
$ docker run [이미지 이름]으로 컨테이너를 생성하고 실행했죠?
근데 사실 $ docker run 명령어는
해당 이미지가 없을 경우 이미지를 다운로드 받아서 자동으로
컨테이너를 생성하고 실행까지 수행합니다 ^^
해서 이미지 이름만 정확하다면 docker run이 일사천리로 해결해주니 참 편리하죠 ^^!
httpd 이미지를 이용하여 컨테이너를 실행하긴 했지만,
foreground로 실행이 되다보니 유저가 별다른 동작을 할 수가 없습니다 ^^;;
해당 컨테이너를 stop 한 다음에 삭제하고 백그라운드로 다시 실행해보겠습니다 ^^
$ docker run 명령에 -d 옵션을 넣어서 이번에는 백그라운드로 실행을 했습니다
$ docker ps -a로 조회해보니 STATUS가 Up 상태인 것을 확인할 수 있겠습니다 ^^
하지만 이 상태에선 컨테이너가 실행중이기만 할뿐,
웹 서버로서 테스트 해볼 수는 없습니다 ^^;;
웹 서버로서 기능이 제대로 동작하고 있는지 확인하려면
-p 옵션을 이용해 일종의 포트포워딩을 작업을 해줘야 합니다 ^^
해당 EC2 인스턴스로 접근할 때 특정 포트로 접근시
80번 포트로 넘겨줘서 해당 apache 웹 서버가 요청을 받도록 하는것이죠 ^^!
포트 포워딩을 통해, 컨테이너로 실행중인 웹 서버에 접근할 수 있게 되었습니다
그럼 이제 웹 브라우저에 EC2 인스턴스의 퍼블릭 IP 주소와 포트 번호를 기입하여 접근해볼까요?
하지만 해당 서버에 접근할 수 없습니다
왜냐하면, EC2 방화벽 설정 중 9999번 포트를 개방하지 않았거든요 ^^;;
본인 PC에서 실습하는 거라면 localhost:9999를 입력하면 동작 화면이 출력될겁니다
하지만 저는 AWS EC2 서비스를 이용하고 있으므로,
보안그룹에 들어가서 인바운드 규칙을 추가해줄 필요가 있습니다 ^^!
AWS EC2 대시보드로 접근해서 해당 인스턴스가
속해있는 보안 그룹을 클릭하신 다음
MongoDB 실습 때와 마찬가지로 해당 포트를 열어주면 되겠습니다 ^^!
웹 브라우저에 다시 해당 IP 주소와 포트번호를 기재하여 접근하니
정상적으로 동작중인 화면이 출력됩니다 ^^!
docker 컨테이너에 관련된 주요 명령어 연습 중
apache 웹 서버 이미지를 컨테이너로 실행해서 동작시켜봤습니다 ^^!
기본적인 명령어에 대한 작은 부분이지만,
어떤 백그라운드 설정을 통해 정상적으로 의도한 결과가 구동되는 모습을 보면
그 때마다 참 짜릿합니다 ^^