AWS EC2에서 Docker를 이용한 Selenium Grid를 실행 시에 console에 접속이 안될 때...?

Dahun Yoo·2022년 7월 3일
2

AWS EC2 이것저것

목록 보기
9/9
post-thumbnail

EC2 인스턴스에 Docker를 이용하여 Selenium grid를 실행하고자 할 때 포트번호 4444 로 콘솔이 접속이 안되는 경우가 있습니다.


기본 설정은 포트번호 4444

Selenium 공식 레포지토리에서, Grid의 문서를 보면 Quick start 부분에 파이어폭스 드라이버로 아래와 같이 커맨드가 있습니다.

docker run -d -p 4444:4444 -p 7900:7900 --shm-size="2g" selenium/standalone-firefox:4.3.0-20220628

외부에서 포트 4444로 접속하면, 도커 내부 포트 4444로 이어지게끔 되어있습니다.
이것은 웹드라이버의 기본 포트가 4444로 설정되어있어서 그러는데,
문제는 EC2에서 상기 커맨드를 그대로 실행을 해도 접속을 할 수 없을 때가 있다는 것입니다.

일단 확인은 보안그룹의 Inbound설정부터

일단 포트를 열어주어야하는데, EC2의 경우는 보안 설정의 inbound에서 열어줄 수는 있습니다.

저의 경우는 셀레니움 도커의 기본 포트인 4444를 열어주었는데도 안되었다는 것이죠.
젠킨스 설정을 위해 8282도 뚫어놓았는데 젠킨스는 브라우저로 접속이 잘 되는 반면, Selenium grid의 console로는 접속할 수가 없었습니다...

해결책은?

웹드라이버의 기본 포트가 4444이긴 한데, 도커의 경우이기 때문에 도커 포트 4444로 리다이렉션 시켜줄 입구를 바꾸어주기만 하면 됩니다.

일단 인스턴스 내에 ssh로 접속한다음, netstat 을 이용해 사용되고 있는 포트를 확인하였습니다.
분명 4444도 사용되고 있는데 신기할 노릇입니다...

inbound 설정 추가

netstat에서 사용되고 있지 않은 임의의 포트를 하나 골라서 inbound설정에서 추가합니다. 저는 8282로 설정했습니다.

커맨드 수정

이후 다시 docker를 실행하는데, 커맨드를 조금 수정해서, 외부포트를 8282로 지정합니다.

docker run -d -p 8282:4444 -p 7900:7900 --shm-size="2g" selenium/standalone-firefox:4.3.0-20220628

이것은 외부에서 8282로 접속하면, 도커내부에서 다시 4444로 연결한다는 의미입니다.

이렇게 설정하고 접속하니

잘 접속이 됩니다.

문제점은...?

문제점은 무엇이었을까요...? 3번이나 인스턴스를 삭제하고 다시만들고를 했지만 결국 4444 포트는 실패했습니다. ㅠㅠ...
포트 선정에 큰 문제가없다면, 포트를 바꿔보세요!

profile
QA Engineer

0개의 댓글