[Docker] 도커는 왜 쓸까?

DoooongDong·2023년 1월 16일
17

Docker

목록 보기
1/1
post-thumbnail

👻 모든 개발자는 이런 에러를 만날 수 있다.

새로운 환경에서 개발을 시작해야하는 경우를 생각해봅시다.

예를들어 프로젝트를 진행 하다가 어떠한 이유로 다른 컴퓨터에서 다른 개발자가 보내준 Java war 파일 또는 jar 파일을 열었습니다.

어떻게 될까요 ???

프로젝트를 실행했더니 어떤 환경 설정을 완료하지 않으면 실행되지 않습니다.

다른 개발자가 쓰던 컴퓨터에서는 잘 동작하더라도 환경 설정이나 자바 버전이 다른 이유 등으로 에러가 발생할 수 있는 것이죠.

에러가 발생해서 파일을 보내준 개발자에게 연락을 해봐도 "제 컴퓨터에서는 잘 동작합니다.." 라고만 돌아올 뿐이죠.

어떻게해서 어쨌든 원인을 찾아 환경설정을 해주었더니 잘 동작하게 되었습니다.

그럼 파일을 보내준 개발자는 왜 이걸 말해주지 않았을까요?? 프로젝트를 시작했을 당시에 환경설정 해주었던 사소한 것 까지 기억을 잘 못했을 확률이 큽니다.

이 예시처럼 기존에 개발한 기기 상태와 자신의 컴퓨터를 똑같이 설정하려고 하면 시간이 너무 많이 소요가 되게 됩니다.

이런 불편함을 해소하기 위해 우리는 도커를 사용해야하는 것이죠!

🐋 도커 이미지와 컨테이너가 뭐지?!

Docker Container는 war 이나 jar 파일을 직접 배포하는 것과 다릅니다.

격리되어 있는 애플리케이션으로 실행되는 jar 파일을 배포하지 않고 컨테이너를 실행만 하는 것입니다.

컨테이너는 무엇이든지 될 수 있습니다. 예시로는 java, nginx, war, 다양한 환경변수들을 포함한 컨테이너입니다.

즉, 컨테이너는 완전히 독립적이고 자급자족적인 환경입니다.

더 자세히 알아봅시다.

🐋 Docker 컨테이너를 정의하려면 이미지를 먼저 구축해야한다!

Docker에서 이미지란 컨테이너의 정의입니다.

자바 개발자가 Eclipse 등의 개발 환경에서 jar 파일 또는 war 파일을 구축한 것처럼 Docker 스타일로 작업하는 개발자는 이미지를 구축하는 것입니다!

이러한 이미지를 다른 사람에게 보내는 겁니다.
실행되고 있는 서버에 애플리케이션을 배포하는 사람이겠죠.
Docker 이미지는 실행할 수 있고 이때 이미지를 실행한 것이 컨테이너입니다.

즉, 컨테이너는 이미지의 인스턴스이며, 간단히 실행하여 이미지 중 하나를 인스턴스화하는 겁니다.

하나의 이미지를 여러 번 실행할 수 있고 동일한 이미지를 수행하는 여러 개의 컨테이너가 생기게됩니다.

여기서 중요한 점은 배포자에게 war or jar 파일을 주는 대신 Docker 이미지를 주는 것입니다.

왜냐하면 Docker 이미지에는 추가 구성이 필요하지 않은 완전한 환경이 포함되어 있어 훨씬 쉽게 배포하고 실행할 수 있기 때문이죠.

우리는 이렇게 도커를 활용하면 맨 처음 말씀드린 예시와 같은 상황을 극복할 수 있게 됩니다 :)

[Reference]
Udemy 강의 Docker - Java 개발자를 위한 완벽 실습 과정

profile
꺾이지 말자 :)

3개의 댓글

comment-user-thumbnail
2023년 1월 25일

도커 이번에 참고해서 꼭 써봐야겠어요 ㅎㅎ 다음 편도 얼른 써주세요 ~!

1개의 답글
comment-user-thumbnail
2023년 4월 11일

잘 읽었습니다 감사합니다.

답글 달기