today I Learn - Docker

김종완·2022년 8월 28일
0

인트로

오늘은 크게 JPQL, DOCKER, 알고리즘 문제를 조금 공부해 보았다. 우선 도커를 지금 막 공부 하였기 때문에 먼저 정리를 해보려 한다. 도커를 사용하기 이전에는 어떤 서버를 사용하기 위해서 자바의 특정 버전을 설치하고 설정하고 여러가지 패키지를 다운로드 하는 등 개발자가 하나 하나 모두 신경 써줘야 됬다. spring boot 를 사용 할 때도 우선 사용했던 자바 버전 그리고 여러가지 패키지를 다운로드 해야한다. 이러한 작업은 귀찮고 섬세해서 하나 잘못되면 삽질을 하게 될 수 있다. 이러한 과정을 이 간단하게 해주는 것이 도커라 할 수 있다.

도커란?

도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이라고 한다. 여기서 컨테이너란 무엇을 말하는 것일까? mysql, redis, jenkins, wordPress 등의 서비스를 사용하려면 여러가지 환경변수, 필요한 패키지 등등 부가적인 기능을 추가해주어 복잡하다 하지만 이를 각각 컨테이너에 넣고 필요한 설정도 다 넣어서 사용하고 싶을 때 컨테이너를 도커란 이름의 컨테이너 운반 고래로부터 가져오게만 시키면 각각의 서비스를 쉽게 사용할 수 있는 것이다. 그리고 이 컨테이너는 어떤 실행환경이든 상관없이 돌아간다.

도커 vs 가상머신

도커는 가상머신과 비교가 많이 될 만큼 비슷해보이다. 그럼 도커와 가상머신의 차이점은 무엇일까?

도커는 가상머신 처럼 독립적으로 실행되지만 가상머신보다 빠르고, 쉽고 효율적이라는 특징이 있다.

도커의 등장

2013년에 DotCloud(현 Docker)에서 첫 공개하였다고 한다.

컨테이너란 격리된 환경에서 작동하는 프로세스라고 할 수 있다. 도커는 리눅스 커널의 기능을 활용하고 이미지 단위로 프로세스 실행 환경을 구성한다.

도커의 특징

확장성/이식성이 뛰어나다.

  • 도커가 설치되어 있다면 어디서든 컨테이너를 실행할 수 있다.
  • 다시 말해서 특정 회사나 서비스에 종속적이지 않다 !!
  • 그리고 서버 생성을 간단하게 할 수 있기 때문에 테스트 서버 또한 생성하기 쉽다.

표준성

  • 만약 django, spring, node.js 등 다른 프레임워크를 사용할 경우 서비스들의 배포 방식이 다르다.
  • 하지만 도커의 경우 컨테이너라는 표준으로 서버를 배포하기 때문에 모든 서버의 배포과정이 동일해 진다.

이미지

  • 컨테이너 이미지가 도커에서 실행되면 컨테이너가 된다고 한다.
  • Dockerfile을 이용해서 이미지를 만들고 처움부터 재현이 가능하다 한다.
  • 빌드 서버에서 스토리지에 이미지를 저장하고 운영서버에서 이미지를 불러와 간편하게 사용한다.

그외

  • 그외에도 설정은 환경변수로 설정하고 하나의 이미지가 환경 변수에 따라 동적으로 설정파일을 생성하도록 만들어저야 한다.
  • 컨테이너가 삭제되면 모든 데이터가 초기화 된다.
profile
개발에 재미를 느끼며 꾸준히 성장하는 개발자 김종완 입니다.

0개의 댓글