카테고리 없음

Docker 란?? (CICD 도전기)

Geisha 2024. 3. 11. 14:47

이야 생각보다 빨리왔다. CICD 를 하는데 있어 현재까지 

- pem 파일을 이용하여 EC2 에 접속

- ufw 설정

- Docker, Docker-compose 설치 순까지 완료하였다.

잘될지 안될 지 몰라도 일단 Docker와 Docker-compose 2개를 설치 했는데
Docker 라는놈이 내인생에 도움이 될놈이라는 세간의 좋은 평가를 듣고
친해지기 위해 뒷조사를 하려한다.

Docker와 Docker-Compose에 대한 GPT 성님의 대답이다.


도커(Docker)와 도커 컴포즈(Docker Compose)는 모두 도커 기반의 서비스를 관리하는 데 사용되는 도구입니다. 각각의 역할과 차이점은 다음과 같습니다:

  1. 도커(Docker):
    • 도커는 컨테이너 기반 가상화를 지원하는 플랫폼입니다.
    • 도커를 사용하면 애플리케이션을 컨테이너로 패키징하여 실행할 수 있습니다. 각 컨테이너는 독립적으로 실행되며 필요한 모든 소프트웨어 및 종속성을 포함합니다.
    • 도커를 사용하여 컨테이너의 빌드, 실행, 배포 등을 관리할 수 있습니다.
  2. 도커 컴포즈(Docker Compose):
    • 도커 컴포즈는 멀티 컨테이너 도커 애플리케이션을 정의하고 실행하기 위한 도구입니다.
    • 도커 컴포즈를 사용하면 여러 개의 컨테이너로 구성된 복잡한 애플리케이션을 간편하게 관리할 수 있습니다.
    • YAML 파일을 사용하여 애플리케이션의 서비스, 네트워크, 볼륨 등을 정의하고, 한 번의 명령으로 모든 서비스를 시작하거나 중지할 수 있습니다.

간단히 말하면, 도커는 개별 컨테이너를 관리하는 도구이고, 도커 컴포즈는 멀티 컨테이너 애플리케이션을 정의하고 관리하는 데 사용되는 도구입니다. 도커 컴포즈를 사용하면 여러 개의 컨테이너로 구성된 애플리케이션을 더 쉽게 관리할 수 있습니다.

 


라고 한다. 

 

도커는 Go 언어로 작성된 리눅스 컨테이너 기반으로 하는 오픈소스 가상화 플랫폼이다.

다시말해서 특정한 서비스를 패키징하고 배포하는데 유용한 오픈소스 프로그램.

 

컨테이너에는 

  • 라이브러리
  • 시스템 도구
  • 코드
  • 런타임
  • 소프트웨어를 실행하는데 필요한 모든것

이 포함되어 있다.

 

가상머신에 비해서 꼭 필요한 것만 담겨서 구동되기 때문에 이미지를 만들 경우 용량이 대폭 줄어든다

Because  가상머신과 달리 각각 OS 설치가 필요없다.

 

도커를 왜 사용할까?

  • 애플리케이션 독립성 (다른컨테이너와 독립된공간을 보장받아 충돌 X)
  • 컨테이너 내부에 작업 후 배포하려 한다면 도커 이미지로 만들어 운영서버에 전달만 하면 됨
  • 마이크로 서비스 구조로 변화가 쉽다. 컨테이너 하나당 하나의 기능을 제공하는 모듈로 만드는 등 조정이 가능하다.

다시말해 Docker 을 사용하면 환경에 구애받지 않고 애플리 케이션을 신속하게 배포, 확장할 수 있다.

 

도커 이미지, 컨테이너란?

  • 컨테이너를 실행할 수 있는 실행파일, 설정 값 들을 가지고 있는 것으로 더이상 의존성 파일을 컴파일 하거나 이것저것 설치할 필요가 없는 상태의 파일을 의미
  • Image를 컨테이너에 담고 실행시키면 해당 프로세스가 동작함.
  • 도커 이미지의 생성 방식 ? 도커이미지는 기존 이미지에 추가적인 구성이 필요할 때 다시 다운로드 하는 방법이 아닌 기존 이미지에 레이어를 추가하여 구성을 올려주는 방식으로 생성됨
  • 다시말해 이미지는 여러개의 읽기 전용 레이어로 구성되고 파일 추가되면 새로운 레이어가 생성되어 추가된다.
  • 도커는 여러개의 레이어를 묶어 하나의 파일 시스템으로 사용할 수 있게 해 준다.

도커 이미지 와 컨테이너의 차이 

 

간단하게 설명하면 도커 이미지는 설계도, 컨테이너는 설계도로 만들어진 상품.

게다가 이미지가 중간에 바꾸게 되더라도 기존 컨테이너는 더이상 이미지에 영향을 받지 않는다.

 

컨테이너의 정의 및 특징

다시말해 Docker Container란 이미지를 실행한 상태로 응용프로그램의 종속성과 함께 응용프로그램 자체를 패키징 Or 캡슐화 하여 격리된 공간에서 프로세스를 동작시키는 기술이다.

 

특징

  • 컨테이너는 이미지 레이어에 읽기/쓰기 레이어를 추가하는 것으로 생성됨
  • 종료되었다고 해도 삭제되지 않음 -> 읽기/쓰기 레이어 보존
  • 컨테이너를 삭제한 것은 생성 파일이 사라지는 것
  • 한 여러개의 컨테이너를 가져도 상관없으며 독립적으로 실행
  • 컨테이너는 커널 공간과 호스트 os 자원을 공유

3.도커 파일

Docker File 은 이미지 생성 출발점으로 이미지를 구성하기 위한 명령어들을 작성하여 이미지를 구성 할 수 있다.

 다시말해, 만들 이미지에 대한 정보를 기술한 템플릿 이라고 보면 된다.

 

이를 빌드하면 자동으로  이미지가 생성된다. 그러므로 도커 파일을 통해 애플리케이션 빌드 및 배포를 자동화 할 수 있다.