Cloud Study - Docker

2021. 3. 15. 16:08Work/Cloud_Devops

728x90
반응형

-> docker란?

https://jfrog.com/knowledge-base/what-is-docker-why-use-docker-containers-a-beginners-guide/

: LXC 기술을 기반으로 구축되었다가, 종속 관계에서 벗어났다.

: LXC는 경량의 가상화 방법으로 유용하게 사용

: Docker 기술은 컨테이너를 실행하는 기능 이상의 것을 제공 >> 컨테이너 생성 및 구축, 이미지 전송, 이미지 버전 관리 프로세스를 용이하게 해준다.

-> why docker?

: 소프트 웨어를 컨테이너라는 표준화된 유닛으로 패키징

: 라이브러리, 시스템 도구, 코드, 런타임 등 S/W 실행하는데 필요한 것들이 모두 포함

: 애플리케이션의 일부를 분해하고, 업데이트 또는 복구하는 능력에 집중 (마이크로 서비스 기반 접근)

: 컨테이너를 위한 운영체제, 서버 운영체제를 가상화

 

-> docker image

: Docker 이미지는 컨테이너를 정의하는 읽기 전용 템플릿

: 코드에 필요한 라이브러리 및 종속성에 대한 정의를 비롯해 실행되는 코드가 포함되어 있다

 

https://www.redhat.com/ko/topics/containers/what-is-docker

-> Container

https://www.slideshare.net/opennaru/ss-201415218

: 애플리 케이션을 실제 구동환경으로 부터 추상화할 수 있는 논리 패키징 메커니즘을 제공

: 사설 데이터 센터, 퍼블릭 클라우드, 개발자의 개인 노트북 컴퓨터 까지 쉽게 지속적인 배포 가능

: 훨씬 작은 단위로 업무를 수행할 수 있음

VM vs Containers, https://cloud.google.com/containers?hl=ko-KRLTE

-> why select docker Container?

: docker는 가장 잘 알려져 있고 가장 널리 사용되는 컨테이너 플랫폼입니다.

1. LXC (Linux 컨테이너)

  : 하나의 중앙 프로그램에 의해 관리되는 대신 각 컨테이너가 자체 권한으로 관리되는 것처럼 작동

  : LXC 컨테이너보다 이식성이 더 높은 경향

2. Hyper-V 및 Windows 컨테이너

  : 각각 고유한 커널을 가지고 있기 때문에 VM 가상화 모델어 더 적합

3. rkt

  : 개별 컨테이너 수준에서 컨테이너를 보다 세밀하게 제어 가능

  : docker의 대안 중 하나 였지만, CoreOS 이후 미래 방향이 애매 했으며, CNCF는 프로젝트에 대한 지원을 중단

4. Podman 오픈 소스 컨테이너

  : 엔드 투 엔드 솔루션이 아님, 다른 기술과 조화를 이루거나 docker 시스템의 특정 구성 요소 대신 사용

5. runC 컨테이너

  : docker의 일부로 작동하고 이식성을 개선하는데 사용

  : 주수준 docker 였으나 이후 독립형 모듈식 도구로 출시

6. containerd 컨테이너

  : 이미지 전송, 컨테이너 실행, 스냅샷 기능 및 특정 스토리지 작업과 같은 컨테이너 수명주기를 쉽게 관리가능

 

>> 가장 널리 사용되는 컨테이너 서비스, 다른 버전의 기술보다 배포하기 쉽다. 사용자가 많기 때문에 레퍼가 많다

>> 선도적인 컨테이너 플랫폼으로, 강력한 지원, 서비스 파트너, 타사 컨테이너 이미지 및 통합의 대규모 에코 시스템 제공

>> Windows, Linux, Mac 등 여러 OS 환경에서의 지원

 

-> docker compose 사용 이유?

: 도커 자체가 그렇게 편하진 않다. 개발 서버를 실행할 때마다 장황한 도커 명령어의 옵션들 적기가 귀찮고, 헷갈리고, 빼먹는 경우가 생긴다.

: 반드시 데이터베이스(DB) 컨테이너를 실행한 다음에 앱(APP) 컨테이너를 실행해야 한다. 그렇지 않으면 APP 컨테이너에서 DB컨테이너를 찾을 수 없다. APP컨테이너 부터 실행했으면 종료하고 DB 컨테이너 부터 실행해야 한다.

: docker가 주는 환경 독립성 장점이 너무 컸기에 사용하였는데, 위와 같은 불편점을 고치기 위해 피그 프로젝트가 나왔습니다. 도커 명령을 실행하는 서드파티 같은 도구였으나 인기를 얻자 도커에서 피그 프로젝트를 흡수하여 도커 컴포즈 라는 이름의 도구로 만든다.

: 컨테이너 실행해 필요한 옵션을 .yml이라는 파일에 적어둘 수 있고, 실행 순서나 의존성도 관리할 수 있다.

 

** .yml 파일을 수정 했다면?

: 파일을 수정하고 이를 서비스에 적용하려면, 서비스를 멈추고(stop), 지우고(rm), 시작(up)해야 합니다. up 명령만 실행해도 설정과 달라진 부분이 있다면 알아서 컨테이너를 재생성하고 서비스를 재시작해줍니다.

 

 

-> docker ubuntu 설치

 

2. Docker의 공식 GPG 키를 추가 합니다.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

3. 안정적인 저장소 선택

$ echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Docker engine 설치

2. 저장소에서 사용 가능한 버전을 나열

3. 올바르게 설치 되었는지 확인

$ sudo docker run hello-world

4. 도커가 정상적으로 실행 중인지 확인

 

*본 내용은 코멘토 직무 부트 캠프를 진행하면서 공부, 혹은 배용 내용들을 정리한 글입니다.

(AWS 해커톤 우승자 출신 글로벌 엔지니어와 클라우드 직무 A to Z)

 

728x90
반응형

'Work > Cloud_Devops' 카테고리의 다른 글

Cloud Study - Docker, mysql  (0) 2021.03.17
Cloud Study - Docker, Python, Flask  (0) 2021.03.16
Cloud Study - AWS EC2 설치, Ubuntu  (0) 2021.03.15
Cloud Study - 비용 알람  (0) 2021.03.15
Cloud Study - GCP(Google Cloud Platform)  (0) 2021.03.15