목차
호스트 OS(로컬PC)에 Docker를 올려서 이미지를 pull 받아서 아주 손쉽게 컨테이너를 띄워서 프로그램을 실행할 수 있다.
Docker image pull 🤗
아래 명령어를 통해 apache webserver를 띄울 수 있다.(사실 이 마저도 생략할 수 있다.)
docker pull httpd #apache webserver image를 pull
docker images #다운받은 이미지 목록 출력
docker run httpd #apache webserver 실행
![[Docker] Docker container port forwarding(feat. Windows 10) - undefined - Docker image pull 🤗 [Docker] Docker container port forwarding(feat. Windows 10) - undefined - Docker image pull 🤗](https://blog.kakaocdn.net/dn/lhRPk/btsy8cG5qjs/l2DkUKDQwJudVy4Yhl1zpk/img.png)
이 상태에서 웹서버를 호출하기 위해 localhost:80를 브라우저에 입력하면 index.html이 표시가 안된다.
![[Docker] Docker container port forwarding(feat. Windows 10) - undefined - Docker image pull 🤗 [Docker] Docker container port forwarding(feat. Windows 10) - undefined - Docker image pull 🤗](https://blog.kakaocdn.net/dn/PycdH/btszdhTTlsj/EvsaAvKUkINILKL1KXtKp1/img.png)
내 컴퓨터에 apache가 돌아가고 있고 포트가 80으로 되어 있다면 표시가 될거다.
하지만 현재 apache를 띄운 곳은 내 컴퓨터안의 Docker라는 별도의 영역에서 실행중이다.
그래서 외부에서 localhost:80으로 호출하면 Docker안의 WebServer가 호출되도록 추가 설정이 필요하다.
외부에서 호출하는 서비스의 포트를 이용해서 분배를 시킬건데 이를 포트 포워딩이라고도 한다.
위키백과를 링크 시켰는데 역시 백과를 보면 쉽게 이해가 안된다. 😑
포트포워딩이란? 😄
알고 있는 지식을 최대한 동원해서 쉽게 설명하면 내가 우편 배달부라고 가정해보자.
![[Docker] Docker container port forwarding(feat. Windows 10) - undefined - 포트포워딩이란? 😄 [Docker] Docker container port forwarding(feat. Windows 10) - undefined - 포트포워딩이란? 😄](https://blog.kakaocdn.net/dn/EUlLX/btsy8mJr8Gp/AwTFv3xeUl715QDQShwqR0/img.jpg)
나는 방화벽이라는 성 안에 거주하는 사람들에게 우편을 배달해야 한다.
![[Docker] Docker container port forwarding(feat. Windows 10) - undefined - 포트포워딩이란? 😄 [Docker] Docker container port forwarding(feat. Windows 10) - undefined - 포트포워딩이란? 😄](https://blog.kakaocdn.net/dn/GbMz2/btszcH6nvbI/zCJJnQ0Z6FioQ4yeF2xWoK/img.jpg)
하지만 나는 성 안의 거주민들 집주소는 알지 못한다.
이를 어쩐다..
다행히도 나는 전체 집주소는 알지 못하지만 집에 붙어 있는 창문번호는 알고 있다.
![[Docker] Docker container port forwarding(feat. Windows 10) - undefined - 포트포워딩이란? 😄 [Docker] Docker container port forwarding(feat. Windows 10) - undefined - 포트포워딩이란? 😄](https://blog.kakaocdn.net/dn/cgt6Lw/btszbN0mQiE/JEAHHr07idlXdnRDwxCWs1/img.jpg)
이 창문번호를 통해서 거주민들에게 우편을 전달할 수 있다.
라우터(공유기)라는 곳에 가서 창문번호를 불러주면 창문번호와 매핑된 내부 집으로 안내해준다.
![[Docker] Docker container port forwarding(feat. Windows 10) - undefined - 포트포워딩이란? 😄 [Docker] Docker container port forwarding(feat. Windows 10) - undefined - 포트포워딩이란? 😄](https://blog.kakaocdn.net/dn/bHkndH/btsy9hA9AHX/S5tMiYxKFBosZwXKBUhU20/img.jpg)
이 라우터라는 감사한 분을 통해서 나는 무사히 성 안의 주민들에게 우편물을 배달 할 수 있게 되었다.
![[Docker] Docker container port forwarding(feat. Windows 10) - undefined - 포트포워딩이란? 😄 [Docker] Docker container port forwarding(feat. Windows 10) - undefined - 포트포워딩이란? 😄](https://blog.kakaocdn.net/dn/G4x16/btsy8b9eGrE/KhoX2D1LCcu0BSLNEnicP1/img.jpg)
네트워크 지식이 깊지 않기에 포트포워딩을 할 때 내부적으로 정확히 어떤 프로세스를 타는지 알지는 못하지만 큰 그림만 최대한 그려보았다.
외부에서 내부의 주소를 알지는 못해도 포트를 통해서 방화벽안에 있는 내부 서버에게 갈 수 있다.
실제로 예전에 회사에서 포트포워딩을 통해서 로컬에 띄운 tomcat을 회사밖에서 테스트 하곤 했었다.
Docker port forwarding 😊
이제 이미지를 컨테이너화 할 때 포트포워딩을 해서 띄워보겠다.
docker run -p 9080:80 httpd #외부에서 9080port로 호출하면 80port로 받도록 설정
![[Docker] Docker container port forwarding(feat. Windows 10) - undefined - Docker port forwarding 😊 [Docker] Docker container port forwarding(feat. Windows 10) - undefined - Docker port forwarding 😊](https://blog.kakaocdn.net/dn/bTKqxF/btsy8nhhYxc/3pV724IfKwZSbCC91KipN0/img.png)
브라우저에서 localhost:9080으로 호출하자 예상한데로 Docker의 apache webserver의 index.html이 표시되었다.
그러나 지금은 포그라운드로 띄운거라 백그라운드로 띄워야 한다.
터미널이 종료되면 서비스도 종료된다는 의미다.
포트포워딩을 통해 백그라운드로 컨테이너화하는 전체 명령어는 아래와 같다.
docker run -d -p 9080:80 httpd # 웹서버를 포트포워딩(-p 옵션)해서 백그라운드(-d 옵션)로 실행
![[Docker] Docker container port forwarding(feat. Windows 10) - undefined - Docker port forwarding 😊 [Docker] Docker container port forwarding(feat. Windows 10) - undefined - Docker port forwarding 😊](https://blog.kakaocdn.net/dn/0jplg/btszbt8SXia/2TapDG9pkKReKEqUtkYcK0/img.png)
첫번 째 입력했던 명령어와 차이가 있다면 docker pull...을 통해서 이미지를 pull받는 명령어가 생략되었다.
docker run 할 때 이미지가 없으면 pull을 받아와서 실행하기에 이 명령어가 더 효율적이다.
이 때 latest 버전으로 받아오니까 특정 버전을 실행하고 싶으면 이미지명에 추가 옵션을 붙여야 한다.
정말 어마어마한 결과다.
![[Docker] Docker container port forwarding(feat. Windows 10) - undefined - Docker port forwarding 😊 [Docker] Docker container port forwarding(feat. Windows 10) - undefined - Docker port forwarding 😊](https://t1.daumcdn.net/keditor/emoticon/friends1/large/006.gif)
apache web server를 띄우려면 설치프로그램 다운로드 해서 서비스 실행 명령어를 통해 실행, 경우에 따라 config도 변경해야 되는 경우도 있는데 이것도 대략 빨라도 10~15분 잡아먹는다.
그런데 Docker를 통해선 명령어 한줄에 단 몇 초만에 apache web server가 실행이 되었다.
돌도끼를 사용하다가 불을 발견하면 이런 느낌이라고 해야 될까?
도커를 이제 막 공부하기 시작했지만 이것도 열심히 공부해야 겠다.
공부할 게 참 많지만 즐겁다.
개인 스터디 기록을 메모하는 공간이라 틀린점이 있을 수 있습니다.
틀린 점 있을 경우 댓글 부탁드립니다.
reference: https://www.youtube.com/watch?v=dZ89MJZ4vJw
'IT > DevOps' 카테고리의 다른 글
[Docker] Docker 실행중인 container 조작(feat. Windows 10) (54) | 2023.10.26 |
---|---|
[Docker] 모든 image 삭제(feat. windows) (61) | 2023.10.26 |
[Docker] Docker image pull/remove(feat. Docker Hub) (55) | 2023.10.25 |
[AWS] AWS IAM 사용자로 인스턴스 생성/ssh 접속 (44) | 2023.08.21 |
[AWS] AWS IAM 사용자/그룹 생성(feat. root계정) (41) | 2023.08.20 |
댓글