티스토리 뷰

docker로 호스팅 할 일이 생겨서 외부에서 접속하는 방법을 알아보다가 다른 분들께 도움이 되고자 글을 남깁니다.


내 Docker의 Container에 접속할 수 있는지 체크해보는 방법 중 가장 간단한 게 웹서버를 띄워서 체크해보는 것이다.

우선, docker의 개념을 조금 알고, 아주 간단한 명령어 run , pull , ps 등의 명령어는 알고 있다고 가정하겠습니다.

 

(1) 실행 환경

테스트에 사용할 웹서버는 nginx 웹서버를 사용하겠습니다. (포스팅한 날짜 기준 latest버전->그래서 버전관리는 latest로 하면 헷갈립니다.)

 

운영체제는 win10 home이고 docker toolbox를 사용하고 있습니다. 다른 도커랑 다른 점은 Virtual box에 얹어서 실행한다는 점이 다릅니다.

 

 

 

(2) nginx container 실행하기

우선 docker toolbox를 관리자 권한으로 실행시켜 줍시다.

 

그리고 다음과 같은 명령어를 입력해 줍시다.

docker run -d -p 9876:80 --name MyWeb nginx

docker는 docker명령을 실행하기 위함.

 

run은 nginx image를 통해 컨테이너를 실행하는 명령어. (image를 찾아보고 없다면 pull -> run) 버전 태그를 안 붙여줬기 때문에 latest 버전을 실행함.

 

-d는 background로 실행.

 

-p는 포트를 명시하기 위한 명령어. 외부:내부 포트이고 9876번 포트로 들어오면 80번 포트에게 전달하는 의미. 여기서 9876은 제 마음대로 붙인 포트번호입니다.

 

--name은 container에게 이름을 붙여주기 위함.

 

nginx은 사용할 이미지 이름.

 

 

명령어의 자세한 부분을 알고 싶으시면 밑의 링크를 참조해주시기 바랍니다.

docker command reference는 밑의 링크

docs.docker.com/engine/reference/commandline/cli/

 

Use the Docker command line

 

docs.docker.com

실행화면

위와 같이 명령어를 입력하면 Container ID가 보이면서 실행이 됨을 알려준다.

 

docker ps -all

위 명령을 입력하여 잘 동작하는지 확인해보자.

 

docker ps -all

잘 동작하고 있다. ports를 보면 9876 포트에서 80번 포트로 전달하는 것을 알 수 있다.

여기서 웹 브라우저를 켜고 docker machine의 IP주소 : port number를 입력하면 홈페이지가 제대로 나타나는지 확인할 수 있다.

 

Docker machine의 IP주소는

docker-machine ip

를 입력해서 알 수 있다.

 

docker-machine ip
접속화면

docker-machine IP주소:외부 포트 주소를 통해 들어왔다.

지금 상황은 딱 위의 그림과 같다.

docker machine의 IP주소를 사용해서 docker machine까지 찾아왔고, 그중에서도 9876번 포트를 사용해서 80번 포트를 사용하는 Nginx의 컨테이너까지 도달했다.

 

자, 이제 외부에서 접속하려면 docker machine의 IP주소가 아닌 내 컴퓨터의 주소를 사용해야 한다.

docker toolbox는 virtual box위에서 실행되고 있기 때문에, virtual box에서 포트 포워딩을 해주어야 한다.

그게 아닌, win 10중에서도 고급 OS이거나(home보다 높은), Linux 같은 경우는 virtual box위에서 띄우고 하지 않기 때문에 이 절차 없이도 바로 가능할 것이다.

 

Virtual box를 관리자 권한으로 실행시켜주고..

포트포워딩

default의 설정으로 들어가서 네트워크 - NAT인 것을 보자.

 

포트포워딩(virtual box)

다음과 같이 설정해주자.

여기서 이름은 그냥 마음대로 붙이면 되고,

호스트 포트는 내 컴퓨터로 들어올 포트의 번호를 붙여주면 된다. 게스트 포트는 virtual box안에서 사용되고 있는, 즉 여기서 docker가 외부 포트 9876으로 들어오면 내부의 nginx에게 연결하기 때문에, 내 컴퓨터의 1234와 virtualbox의 9876을 연결시켜주면 된다.

 

이해가 한 번에 안 될 것 같으니까 그림으로 다시 한번..

(그림이 정말 편함)

 

toolbox가 참 복잡하다..

VM에서 포트 포워딩을 통해 1234----9876을 연결해주었다.

 

이런 구조로 동작하고, 

127.0.0.1
사설 IP

이처럼 제대로 동작한다.

 

이제 웹서버가 아닌, 다른 어떤 서비스할 프로그램을 구현하고 컨테이너로 실행시켜 준 다음 같은 절차로 접근하면 된다.

 

내 서브넷이 아닌 서브넷 외부에서 접속하려고 하면 (ex. LTE, 다른 지역 등) 방화벽 설정을 해주고 공유기를 사용한 경우 포트포워딩을 해주면 된다. (밑의 글 참고!!)

kibbomi.tistory.com/219

 

[Web server] 외부에서 내 웹서버(PC)에 접속하기 (포트포워딩, 방화벽)

최근 VPN 서버를 만들일이 있어서 이것저것 세팅하다가 구글에 제대로 된 정보가 몇 없어서 다른 분들께 도움이 되고자 글을 남깁니다. 공유기 밑에 있는 내 서브넷의 외부에서 나의 웹 서버에

kibbomi.tistory.com

 

댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Total
Today
Yesterday