가상 네트워크는 무엇이고어떻게 동작하는 것일까? 네트워크란? --2024.06.23 - [Terminology] - 네트워크란? (feat. IP, 네트워크 인터페이스, 포트, NAT, 포트포워딩, DNS)-- 가상 네트워크 구성 --가상 네트워크는서버 한 대 안에서 여러 네트워크를 구성하는 기술이다. 해당 가상 네트워크망 안에서 컨테이너들이 존재할 수 있고해당 컨테이너들은 같은 가상 네트워크망 안에서 서로 통신할 수 있으며내부의 컨테이너와 외부의 서버와도 통신이 가능하다. 위 그림은사설망을 통해서 현재 사용 중인 PC에 IP(192.168.0.10)를 할당받고해당 PC에 도커 가상화 기술을 사용하여 내부에 컨테이너 여러 대를 실행시킨 구조이다. 인터넷 선(랜선)이나 공유기와 같이 물리..
전체 글
가상 네트워크에 포트포워딩을하는 이유와 방법이 무엇일까? 가상 네트워크의 NAT, 포트포워딩 --가상 네트워크에서 포트포워딩을 하는 명령어 형식docker run {-p 호스트OS포트:컨테이너포트} ... -p 포트포워딩을 지정해주는 옵션 "-p" 옵션으로 `:` 클론을 기준으로 두 개의 포트를 작성하여 포트포워딩을 지정해 준다. 왼쪽에 작성하는 포트 = 서버(PC)에서 사용할 호스트OS의 포트번호를 지정오른쪽에 작성하는 포트 = 컨테이너가 사용하는 포트번호를 지정 기본적으로 같은 가상 네트워크 안에서 컨테이너를 실행하면 해당 컨테이너끼리는 통신이 가능하다.다만 도커를 설치하고 사용 중인 서버(PC)의 호스트 OS나 가상 네트워크의 외부에서 가상 네트워크의 컨테이너로 접근하려면 포트포워..
프론트엔드, 백엔드, 데이터베이스를 서로 연결하여애플리케이션 구현은 어떻게 할까?"leafy"라는 식물 관리 애플리케이션을 구현해 보자. 구성 및 흐름 -- 실습할 애플리케이션은 총 3개의 서버로 구성되어 있다.Vue.js 기반인 Nginx 웹 서버Spring Boot 기반인 Spring Boot Tomcat WAS 서버PostgreSQL 기반인 Database 서버 흐름 설명클라이언트는 웹 서버의 주소를 브라우저에 입력하여 요청을 보냄웹 서버에서 index.html 파일과 같이 웹페이지를 응답하여 제공클라이언트가 웹 페이지를 읽는 과정에 어떠한 데이터 정보를 접근해야 하는 경우브라우저에서 백엔드로 데이터 관련 요청을 보냄백엔드에서 데이터 조회 및 저장을 하려면 postgreSQL에 접근하여..
클라우드 네이티브 애플리케이션이 무엇인가? 클라우드(Cloud)란? --네이버 클라우드나 구글 클라우드처럼 클라우드는 보통 저장소를 의미한다. 즉, 클라우드는 다른 회사의 저장소를 빌려서 사용하는 것이다. 그러다 보니 직접 서버를 운영할 환경이 안된다면 다른 회사의 컴퓨터(클라우드)를 빌여서 서버를 운영하면 된다. 실제로 클라우드를 사용하여 서버를 운영하면 다양한 문제들을 해결할 수가 있다. 1. 트래픽 변동에 대해 빠르게 대처할 수 있는가? (확장성 Scalability) 직접 서버를 운영하면 내 서버 용량에 맞춰서 설계를 해야 하고사용 가능한 용량을 넘어서는 트래픽이 증가하면 해당 서버는 다운되고 말 것이다.클라우드 환경에서는 트래픽이 증가하면 빠르게 서버를 늘리고 트래픽이 감소하면 서버..
네트워크란 무엇이고네트워크에서 사용하는 용어들은 무엇일까? 네트워크(Network)란? -- 네트워크는 여러 개의 장치들이 서로 연결되어서 정보를 주고받을 수 있는 시스템이다. 위 그림처럼네트워크는 렌선 케이블로 물리적으로 연결되어 있으며이 물리적인 케이블을 가지고 전기 신호를 통해서 정보를 주고받을 수 있게 되는 것이다. 즉, 네트워크는 여러 장치(컴퓨터)들이 서로 데이터를 주고 받을 수 있도록 연결된 시스템이다.-- IP 주소 (Internet Protocol Address)란? --택배나 편지를 보낼 때 상대방의 주소가 필요하듯이네트워크에서도 정보를 보내기 위해서는 IP 주소가 필요하다. 즉, IP 주소는 네트워크 상에서 장치(컴퓨터)들을 식별하기 위한 고유한 주소다.(컴퓨터가 인터넷..
멀티 스테이지 빌드란 무엇이고어떻게 사용하는 것일까? 멀티 스테이지 빌드 (Multi-Stage build) --멀티 스테이지 빌드는Dockerfile에서 두 개의 베이스 이미지를 활용하는 방법을 의미한다. 보통 애플리케이션을 빌드하는 과정에서 만들어지는 파일들이 용량을 많이 차지한다.하지만 해당 파일들은 실제로 애플리케이션이 실행되는 시점부터는 사용하지 않기 때문에이미지 빌드에 사용하는 이미지와 실행에 사용하는 이미지로 나누는 것이다.이렇게 멀티 스테이지 빌드를 잘 활용하면실제로 애플리케이션이 실행되는 이미지의 크기를 줄일 수 있다.애플리케이션 빌드 vs 이미지 빌드애플리케이션 빌드는소스 코드를 실행 가능한 프로그램으로 만드는 것을 의미즉, 해당 소스 코드가 실행되기 위해 필요한 라이브러리를 ..
Dockerfile에 작성하는 지시어들은어떤 것들이 있을까? Dockerfile의 파일명이 "Dockerfile"이 아니고 별도로 지정한 경우의 build 명령어 --Dockerfile의 파일명은 일반적으로 그냥 "Dockerfile"이라고 저장하여 사용한다. 다만 어떠한 상황에 의해 파일명을 다르게 저장해야 하는 경우도 생긴다. 예시로상황에 알맞게 빌드하기 위해 상황별 Dockerfile을 여러 개 저장하고 build 할 때 원하는 Dockerfile로 build를 하는 상황이다.Dockerfile을 각각 다른 내용을 작성 후 AAA, BBB, CCC라고 총 3개의 파일을 저장하고 특정 상황마다 build를 할 때 원하는 Dockerfile을 선택하여 build한다. 이렇게 Dockerfile..
빌드 콘텍스트가 무엇일까? 빌드 컨텍스트 (Build Context) --빌드 컨텍스트는이미지를 빌드할 때 사용되는 폴더를 의미한다. 이미지 빌드 방식은도커 데몬이 임시 컨테이너를 실행시키면서 레이어를 하나씩 추가하면서 커밋을 하게 된다. 그래서 도커 데몬이 해당 동작들을 수행하기 위해서는빌드에 사용되는 파일들과 Dockerfile 파일을 전달해줘야 한다. (해당 파일들이 담긴 폴더 자체를 전달)(그래야 도커 데몬이 Dockerfile에 작성된 내용(코드)들을 가지고 빌드를 진행할 수 있게 된다.) 이때 이렇게 도커 데몬에게 전달해 주는 폴더가 바로 빌드 콘텍스트이다. 즉, 이전에 build를 하던 과정을 보면 index.html 파일과 Dockerfile을 담고 있던 01.buildnginx..