귀엽긴 한데, Docker가 뭐야?
Docker는 컨테이너 기반의 오픈소스 가상화 플랫폼인데, 이렇게 설명하면 어려우니까 쉽게 말해서, 내가 작성한 코드, 내가 사용한 라이브러리, 의존성들을 하나의 패키지로 묶어서 소프트웨어를 일관되게 실행할 수 있게 해 줍니다!
Docker를 통해서 다른 팀원들이나, 다른 사랑과의 코드 공유 중에 발생하는 "내 컴퓨터에서는 잘 돌아가는 데 왜..." 같은 문제를 예방할 수 있습니다.
사용하는 이유
처음에 개발을 시작할 때, 많은 사람들이 개발 환경을 구성하다가 수많은 오류를 맞이하게 됩니다. 그만큼 초기의 개발 세팅을 굉장히 중요하고, 어려운 일입니다. 이후에 개발이 조금 익숙해지면, 초기세팅은 어렵지 않지만, 배포 환경에 따른 종속성 문제를 맞이하게 됩니다. 특히, Java언어와 SpringBoot 프레임워크와 같은 초기 라이브러리 세팅이 중요한 프로젝트를 다룰 경우, 더욱 중요하고, 어려운 문제가 될 수 있습니다. 이러한 문제들을 Docker를 통해서 해결할 수 있습니다.
또한, Docker 내부에 Container를 여러 개 생성해서 하나의 프로젝트를 지지하는
Container와 Image
위의 그림들을 보면 Containers와 Images라는 것이 Docke_Host 내부에 존재하게 되는데, Docker_Host는 Docker 프로그램 자체이고, 사용자가 CLI로 docker build..., docker pull..., docker run... 과 같은 명령어를 입력하게 되면, Docker_Host에서는 해당 명령어를 Docker daemon으로 해석하여, 만약 사용자가 기존에 저장되어 있는 Image를 가져오려고 하면 Docker Hub에서 해당 이미지를 가져오고, 만약 사용자가 직접 만들 Image인 경우, Image를 만들기 위해 Dockerfile들을 기반으로 Image를 생산하게 된다.
docker images
만약에, 어떤 명령어를 사용해서 Image를 만들거나, 가져왔다면 위의 명령어를 통해서 현재 자신이 갖고 있는 Image들과 버전에 대한 정보를 확인할 수 있다.
그다음으로 Image를 기반으로 Container를 실행하게 되는데, 이 컨테이너는 사용자 OS와 분리되어 있는 환경을 가지고 있어서, Windows에서 Linux 환경을 세팅하는 식으로 사용할 수 있다.
'Backend > Deployment' 카테고리의 다른 글
Nginx 설정이 귀찮다고? feat. Nginx Proxy Manager (1) | 2024.06.11 |
---|---|
돈 안내고 서버 쓰기 (1) | 2024.02.13 |
[Deployment] 집에서 배포해보기 (2)- 인바운드 규칙과 방화벽 설정 (0) | 2023.09.21 |
[Deployment] 집에서 배포해 보기 (1) - Network Port Forwarding (0) | 2023.09.17 |
[Deployment] Docker 내부구조 (0) | 2023.09.07 |