이 글은 2024 05월 원티드 프리온보딩 BE 챌린지 프로그램 도커편 1회차 수업을 회고하며 정리한 글입니다.
들어가기 전, 네트워크 관련 기본 용어들을 짚고 넘어가도록 하겠다.
네트워크 기본 용어
- host - 호스트의 네트워크를 직접 사용.
- bridge - 기본 네트워크 드라이버, 동일한 도커 호스트에서 컨테이너 간의 통신을 도와줌.
- overlay - 서로 다른 도커 호스트의 컨테이너 간 통신을 도와줌
이론
현재까지 docker 없이는 컴퓨터 웹 서버를 직접 설치했지만, 도커를 이용하면 웹 서버가 도커의 컨테이너에 설치된다.
- 이 컨테이너가 설치된 운영 체제를 host라고 부른다.
- 컨테이너와 호스트 모두 독립적인 환경에서 실행되기 때문에, 각자 독립적인 포트와 파일 시스템을 갖고 있다.
현재는 웹브라우저로 웹 서버에 접속을 시도하더라도 접속이 안 된다. 왜일까? 호스트와 컨테이너간의 연결이 지금은 끊겨있기 때문이다.
- 접속을 성공시키기 위해선 Host의 80번 포트와 Container의 80번 포트를 연결시켜 줘야한다.
- docker run -p 80:80 httpd : 앞 80은 host의 포트 번호를 의미하고 뒤 80은 container의 포트 번호를 의미한다.
이렇게 설정해주면 호스트의 80번포트로 들어온 신호가 컨테이너의 80번 포트로 전송된다.
- port forwarding : 이렇게 연결된 포트로 신호를 전달(forwarding)하는 것을 포트 포워딩이라고 한다.
- 이후 컨테이너 80번 포트의 요청 신호가 웹서버로 전달되고, 나머지 과정은 이전과 동일하다.
- 만약 접속 경로가 80번에서 8000번 포트로 변경됐다면? Host 포트번호 자리를 8000으로 바꿔주면 된다.
url 요청 주소는 http://example.com:8000/index.html 이 될 것이고,
명령어는 $ docker run -p 8000:80 httpd 가 될 것이다.
실습
- (도커 desktop ver) 컨테이너 run
도커 desktop에서 로컬 이미지를 run 시켜준 후, 옵션을 하단처럼 설정해주자.
- 참고: 컨테이너의 80번 포트는, 이 이미지를 만든 사람이 '이 이미지에 설치 프로세스로 접속할 때 80번 포트로 접속하도록 설정해뒀기 때문'에 80으로 고정된 것
- (Command Line ver) 컨테이너 run
도커 데스크탑을 통해 ws2라는 이름의 컨테이너를 만들어주었으니 이번엔 CLI를 통해 다른 이름의 컨테이너를 만들어보자.
docker run --name ws3 -p 8081:80 httpd
이름은 ws3로, 호스트 포트번호는 8081로 들어오면 컨테이너의 80번 포트로 run하겠다.라는 명령어이다. (p는 publish의 첫 자)
다른 창을 열어, docker ps 명령어로 확인해 봤을 때 PORT 번호가 잘 설정된 것을 볼 수 있다.
- 확인
커맨드 라인을 통해 설정해준 컨테이너를 확인해보자.
새 시크릿 창을 열어 설정한 포트번호를 넣어 url을 입력해줬다.
localhost:8081/index.html
성공 !!!!!!!!!!!!!!
로그도 확인 해보자.
<다음 글>
References
https://www.youtube.com/watch?v=SJFO2w5Q2HI&list=PLuHgQVnccGMDeMJsGq2O-55Ymtx0IdKWf&index=5
'Containerization > Docker' 카테고리의 다른 글
[Docker] Dockerfile에서 명령어 순서가 중요한 이유 (w/ 도커 이미지 레이어 구조) (0) | 2024.05.16 |
---|---|
[Docker] 도커 컨테이너 명령어 실행 (pwd, exec, -it, /bin/sh) (0) | 2024.05.13 |
[Docker] 도커 run/stop/remove/이미지 삭제하기 (0) | 2024.05.11 |
[Docker] 도커 image pull 받기 / 받은 것 확인하기 (0) | 2024.05.11 |
[Docker] Windows 도커 설치 / 설치 확인 (1) | 2024.05.09 |