EC2 인스턴스에 Docker를 이용하여 Selenium grid를 실행하고자 할 때 포트번호 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에서 상기 커맨드를 그대로 실행을 해도 접속을 할 수 없을 때가 있다는 것입니다.
일단 포트를 열어주어야하는데, EC2의 경우는 보안 설정의 inbound에서 열어줄 수는 있습니다.
저의 경우는 셀레니움 도커의 기본 포트인 4444
를 열어주었는데도 안되었다는 것이죠.
젠킨스 설정을 위해 8282
도 뚫어놓았는데 젠킨스는 브라우저로 접속이 잘 되는 반면, Selenium grid의 console로는 접속할 수가 없었습니다...
웹드라이버의 기본 포트가 4444
이긴 한데, 도커의 경우이기 때문에 도커 포트 4444로 리다이렉션 시켜줄 입구를 바꾸어주기만 하면 됩니다.
일단 인스턴스 내에 ssh로 접속한다음, netstat
을 이용해 사용되고 있는 포트를 확인하였습니다.
분명 4444
도 사용되고 있는데 신기할 노릇입니다...
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
포트는 실패했습니다. ㅠㅠ...
포트 선정에 큰 문제가없다면, 포트를 바꿔보세요!