본문 바로가기
⚙️백엔드/Docker

도커 - 포트포워딩을 통해 외부에서 접속하기

by Janger 2022. 1. 13.
728x90
반응형

도커 네트워크 특성 때문에 이미 컨테이너화 된 컨테이너를 포트 포워딩을 시킬 수가 없다고 하다네요. 

아무튼 이미 만들어진 컨테이너에 외부 접속을 가능하게 하려면, 컨테이너를 다시 이미지화시킨 다음에 최초로 run을 시킬 때에 포트 값을 주어야 합니다. 

 

도커 commit 관련 포스팅: 

https://janger.tistory.com/178

 

도커 - 컨테이너를 이미지화 시키기(commit)

1. 실행중인 컨테이너 종료 docker stop {컨테이너 이름} 2. 이미지화할 컨테이너를 commit하기 docker commit {컨테이너 이름} {출력할 이름} 3. 이미지들 확인 docker images 4. 컨테이너 start docker start {..

janger.tistory.com

 

 

우선 실행 중인 컨테이너를 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 container에 포트포워딩 다시 설정하기

도커에 센토스(컨테이너)를 올려서 배포하고 접근하려면 처음부터 도커를 run할때 포트포워딩을 해야합니다. 도커 네트워크 특성때문입니다. 그래서 처음 사용할 때 모르고 컨테이너를 만들었

pjs21s.github.io

참고: 

https://geekcoders.tistory.com/entry/Docker-Docker-%EC%84%A4%EC%B9%98%EB%B6%80%ED%84%B0-%EA%B8%B0%EB%B3%B8-%EC%82%AC%EC%9A%A9

 

[Docker] Docker 설치, 기본 사용

매번 간단한 테스트나 설치 가이드문서를 작성할 때 리눅스를 VM에 설치하기 너무 번거로웠다. 그래서 Docker를 이용하기로 결정. 자주 사용하는 부분만 정리한다. 도커는 모두 root 권한으로 수행

geekcoders.tistory.com

 

728x90
반응형