BLOG / CLOUD / 29 March 2023 / by LeeDiculous

Cloud-Native App이란?

1. DevOps

Ops → Linux 중요!

2. Micro services

무중단 배포 수시로 배포하게 된다. 고로 도커(컨테이너)를 사용하게 된다.

3. Docker

컨테이너

  • 서로 다른 프로젝트들을 하나의 규격(container)에 담아 올린다. 각 프로젝트의 인프라, 서버, 코드 등의 프로젝트를 실행하기 위한 모든 소스가 한 컨테이너에 담긴다.
  • docker와 k8s는 컨테이너 기술이다. → 도커는 하나의 컨테이너, 쿠버네티스는 컨테이너들을 싣은 선박

도커란 무엇인가?

  • 컨테이너를 사용하여 응용프로그램을 더 쉽게 만들고 배포하고 실행할 수 있도록 설계된 도구이며, 컨테이너 기반의 오픈소스 가상화 플랫폼이며 생태계이다.
  • 컨테이너 안에 다양한 프로그램, 실행환경을 컨테이너로 추상화 하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해준다.

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

  • 컨테이너는 소프트웨어 환경으로부터 격리시키고 개발과 스테이징의 차이에도 불구하고 균일하게 작동하도록 보장한다.

도커 사용 흐름

  • 도커 CLI에 커맨드를 입력한다.
  • 도커 서버가 그 커맨드를 받아서 그것에 따라 이미지를 생성하거나 컨테이너를 실행하는 모든 작업을 하게 된다.
도커와 가상화 기술과의 차이

공통점
도커 컨테이너와 가상 머신은 기본 하드웨어에서 격리된 환경 내에 애플리케이션을 배치하는 방법이다.

차이점
도커 컨테이너에서 실행하는 애플리케이션은 여전히 같은 호스트의 다른 컨테이너와 동일한 커널을 공유한다.

이미지 → 컨테이너로 실행되는 과정

Image.png

docker 명령어

-docker run 이미지이름
docker run 이미지이름 ls 도 가능하다. 이미지 마다 ls를 사용할 수도 있고 아닐수도.

-docker ps -a
컨테이너 실행 이력까지 확인 가능하다.

-docker run alpine ping localhost
alpine에게만 있는 기능

-docker images
다운받은 이미지들을 확인 가능하다.

-docker image prune -a
모든 이미지 삭제 -docker stop, kill

-docker rm => -f

-docker rmi 아이디

-docker exec 아이디 ls
exec 후, 질의가능

Dockerfile 만들기

도커파일이란?

  • 도커 이미지를 만들기 위한 설정 파일이며, 컨테이너가 어떻게 행동해야 하는지에 대한 설정들을 정의해 주는 곳

도커 파일 만드는 순서

  • 베이스 이미지를 명시해 준다.(파일 스냅샷에 해당)
  • 추가적으로 필요한 파일을 다운 받기 위한 몇가지 명령어를 명시해 준다.(파일 스냅샷)
  • 컨테이너 시작 시, 실행될 명령어를 명시해 준다.

FROM

  • 이미지 생성 시, 기반이 되는 이미지 레이어
  • <이미지 이름=""> : <태그> 형식으로 작성
  • ex) ubuntu:14:04

RUN

  • 도커 이미지가 생성되기 전에 수행할 쉘 명령어

CMD

  • 컨테이너가 시작되었을 때, 실행할 실행 파일 또는 쉘스크립트

Dockerfile

#베이스 이미지를 명시한다.
FROM alpine

#추가적인 파일(실행)

#컨테이너에서 실행할 명령어
CMD [ "echo", "hello" ]
#docker image build
docker build leediculous/node.js:latest

#docker image run
docker run leediculous/node.js
#이미지가 없을 때, 이미지를 빌드하고 컨테이너를 시작
docker-compose up -d 

#이미지가 있든 없든 이미지를 다시 빌드하고 컨테이너 시작
docker-compose up -d --build
Tags:
Comments