Docker/Docker 주요 명령어 익히기

[Docker 기본 명령어] 5. docker run의 -p 옵션과 컨테이너로 웹 서버 apache 사용해보기

Fletcher 2024. 8. 13. 11:49

 

반갑습니다!

 

 

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 웹 서버 이미지를 컨테이너로 실행해서 동작시켜봤습니다 ^^!

 

기본적인 명령어에 대한 작은 부분이지만,

어떤 백그라운드 설정을 통해 정상적으로 의도한 결과가 구동되는 모습을 보면

그 때마다 참 짜릿합니다 ^^