도커로 데이터베이스를 실행하고, 이를 스프링부트에서 사용할 수 있습니다. 그렇다면 왜 굳이 도커로 데이터베이스를 띄울까요? 다양한 이유가 존재하겠지만... 이유를 하나만 뽑자면 다음과 같습니다.팀 구성원이 모두 동일한 환경에서 작업을 진행할 수 있다. A라는 사람은 MySQL 5.7을 사용하고, B는 MySQL 8.0을 사용합니다. 서로가 다른 버전을 사용하기 때문에 호환성 문제가 발생할 수 있습니다. 특히나 배포에 있어서 예상치 못한 문제가 발생할 수 있습니다. 이러한 문제를 사전에 방지하고자 도커를 활용하여 개발 및 배포 환경에서 일관성, 호환성을 확보해야 합니다. 도커 컴포즈를 사용하여 MySQL를 띄어 스프링부트에서 사용해보도록 하겠습니다.도커 컴포즈도커 컴포즈란 여러 컨테이너를 손쉽게 관리할..
Statelss 한 도커 컨테이너 도커 컨테이너는 상태를 저장하지 않는 Stateless 특징을 갖습니다. A 이미지로 컨테이너를 실행하다가 삭제하고 다시 컨테이너를 생성하면 이전의 변경사항이 모두 삭제됩니다. 왜냐하면 읽기 전용인 이미지를 컨테이너로 생성하면 R/W 컨테이너 레이어가 생성됩니다. 해당 컨테이너에서 변경사항은 R/W 컨테이너 레이어 위에 추가되기 때문에 컨테이너를 삭제할 시에 변경사항이 모두 삭제됩니다. 예를 들어 Nginx 이미지로 컨테이너를 실행하고, 해당 컨테이너에서 변경사항이 발생하였습니다. 컨테이너에서의 변경사항을 기존의 이미지에 변경사항을 적용하게 된다면 해당 이미지를 사용하는 모든 컨테이너에 변경사항을 적용해야 합니다. 이러한 방식은 stateful 한 방식으로 여러 개의 ..
네트워크 기본을 기반으로 도커에서의 네트워크를 알아보겠습니다. Docker에서는 가상 네트워크 개념을 사용합니다. 가상 네트워크란 논리적으로 구성된 네트워크로, 하나의 물리적 네트워크 인터페이스를 기반으로 여러 개의 가상 네트워크를 생성할 수 있습니다. 가상 네트워크는 VLAN(Virtual LAN)과 같은 개념으로 사용될 수 있습니다. 도커도 가상 네트워크 개념을 사용합니다. 공인망으로부터 분리된 사설망 네트워크가 만들어지고, 사설망 내부에는 가상의 네트워크가 존재합니다. 네트워크 브릿지 위 사진을 보면 가상 네트워크 내부에 네트워크 브릿지가 존재합니다. 네트워크 브릿지란 도커 컨테이너 환경에서 네트워크를 관리하기 위한 기능입니다. 호스트와 컨테이너 간의 통신을 가능하게 하며, 컨테이너 간의 통신 또..
공인 IP와 사설 IP 인터넷에서 컴퓨터 간에 데이터를 주고받기 위해서는 IP라는 통신 프로토콜이 필요합니다. IP는 전송 계층과 네트워크 계층 사이에서 데이터를 패킷 형태로 분할하고, 각 패킷에 출발지 및 목적지의 IP 주소를 지정합니다. 각 컴퓨터마다 고유한 IP 주소를 갖기 때문에 이를 통해 데이터를 주고받는 컴퓨터를 고유하게 식별할 수 있습니다. 공인 IP 공인 IP는 인터넷 서비스 제공자(ISP)로부터 할당되는 고유한 IP 주소입니다. 고유한 IP 주소이기 때문에 전 세계적으로 다른 인터넷 사용자들과 통신할 수 있습니다. 사설 IP 사설 IP는 내부 네트워크에서 사용되는 IP 주소입니다. 인터넷에 공인되지 않으며, 로컬 네트워크 내에서만 유요한 IP 주소입니다. 일반적으로 가정이나 사무실의 로컬..
이미지를 빌드하기 위해서는 build 명령어를 사용해야 합니다. 또한 빌드를 하기 위해서는 Dockerfile을 필요로 합니다. Dockerfile을 사용하여 이미지로 빌드할 때 사용하는 명령어에 대해서 알아보겠습니다. Dockerfile 빌드 기본적으로 Dockerfile을 빌드하기 위해서는 다음 명령어를 입력해야 합니다. Dockerfile이 존재하는 경로를 찾아 원하는 이미지명을 지정하여 이미지를 생성할 수 있습니다. $ docker build -t 이미지명 Dockerfile경로 위의 명령어는 빌드를 할 때 필요로 하는 도커파일의 이름을 Dockerfile로 인지하고 있습니다. 따라서 별도로 도커파일의 이름을 지정해주지 않았습니다. 그러나 도커파일명이 항상 Dockerfile 일 수가 없습니다. ..