도커 네트워크 특성 때문에 이미 컨테이너화 된 컨테이너를 포트 포워딩을 시킬 수가 없다고 하다네요.
아무튼 이미 만들어진 컨테이너에 외부 접속을 가능하게 하려면, 컨테이너를 다시 이미지화시킨 다음에 최초로 run을 시킬 때에 포트 값을 주어야 합니다.
도커 commit 관련 포스팅:
https://janger.tistory.com/178
우선 실행 중인 컨테이너를 stop을 통해서 아래와 같이 종료를 시켜준 다음
다음과 같이 commit을 합니다.
docker commit {컨테이너 이름} {출력될 이름}
"docker images" 명령어를 입력하니 방금 commit 시켜준 도커 이미지가 보이게 됩니다.
이를 이제 run 시켜줍니다. ※ 이때 포트포워딩 하고자 하는 포트 번호를 인자로 함께 건네주어야 함.
docker run -p {포트번호:포트번호} {이미지 이름}
여기까지 하면은 포트포워딩이 성공이라고 다른 포스팅들은 그러지만 정작 start 조차도 되지가 않는 경우에는
우선 잘못 생성된 컨테이너를 삭제
docker rm {컨테이너 이름}
그리고 run을 할때에 -i -t 옵션을 주어서 바로 컨테이너에 연결을 하는 것이 해결 방법
docker run -it -p 3000:3000 {이미지 이름} /bin/bash
정말 -i -t 옵션을 주니깐 바로 해결된 것을 볼 수가 있었다.
외부 접근이 가능한지 확인을 위해 파이썬의 http.server 모듈을 사용해 보았다.
위 명령어를 실행후 내 데스크톱 PC로 http://localhost:3000/에 접근을 해보니
도커의 웹서버에 접속하는데 성공하였다.
만약 포트 번호를 여러개를 주고 싶을 경우엔
마찬가지로 최초에 run을 할 때에 -p 옵션을 여러 개 건네주면 된다.
docker run -it -p 3000:3000 -p 2000:2000 {이미지 이름} /bin/bash
참고:
https://pjs21s.github.io/docker-port-forwarding/
참고:
'⚙️백엔드 > Docker' 카테고리의 다른 글
Docker - 실행중인 컨테이너 포트 바인딩하기 & DNS 서버 주소 설정 (0) | 2023.03.31 |
---|---|
도커 - 파일 전송하기 (0) | 2022.01.13 |
도커 - 컨테이너를 이미지화 시키기(commit) (0) | 2022.01.13 |
도커 - 컨테이너 종료하지 않고 cmd 나가기 (0) | 2022.01.13 |
도커 - 기본적인 명령어 모음 (0) | 2021.11.30 |