티스토리 뷰

Docker

- 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다.
- 다른 도구와 마찬가지로 어떤 문제를 해결하기 위해 만들어 졌다.

 

 

서버를 관리 한다는 것은 무엇인가?

- 복잡하다. 서버 안의 무엇 하나라도 문제가 생기면 출력이 되지 않는다.

- 서버에서 무언가 설치하거나, 수정하는데에 제대로 되지 않는 경우가 많다.

- 인프라가 계속 바뀔 수 있다. (AWS -> AZURE -> Google Cloud 등)

- 개발환경이 바뀔 수 있다.(node.js -> spring 등)

 

도커가 등장하고 서버관리/개발 방식이 완전히 바뀌게 되었다.

Docker는 어떤 문제를 해결했나?

- 서버관리 방식의 변화

- 어떤한 프로그램도 컨테이너로 만들 수 있다.

- 컨테이너를 하나 만들어두면 어디서든 잘 돌아간다.

 

가상머신 같은건가?

- 반은 맞고 반은 틀리다.

- 가살머신처럼 독립적으로 실행되지만

- 가상머신보다 빠르고

- 가상머신보다 쉽고

- 가상머신보다 효율적이다.

 

 

Docker의 등장

- 도커가 등장하기 전 서버 운영

인프런 - 초보를 위한 도커 안내서

- 어디서 문제가 생기면 제대로 돌아가지 않는다.

-> 서버의 상태를 관리하기 위한 노력

1. 첫번째 시도

- 서버배포.pptx 문서 만들기

-> 버전이 바뀌거나 os가 바뀌면 안된다. 등등 문서만 보고 하기엔 어려움

 

2. 두번째 시도

- 서버 문서

->센트os, 우분트 버전관리 어려움, 작성의 난이도가 어려움

 

3. 세번쨰 시도

- 가상머신으로 각각 어플리케이션을 띄운다.

-> 만들어진 히스토리 파악이 어렵다. 속도 저하.

 

4. 자원격리

- 프로세스 > 가상으로 분리

- cpu,memory,I/O > 그룹별로 분리

- 리눅스 기능을 이용한 빠르고 효율적인 서버 관리

-> 사용하기가 너무 어려움..

 

-> 어려운 복잡한 기술을 쉽게 만든것이 Docker!

도커의 등장

2013년에 DotCloud(현 Docker)에서 첫 공개

컨테이너 : 격리된 환경에서 작동하는 프로세스

리눅스 커널의 여러 기술을 활용

하드웨어 가상화 기술보다 가벼움

이미지 단위로 프로세스 실행 환경을 구성

 

도커란?

 

인프런 - 초보를 위한 도커안내서

- overhead부분이 속도를 저하시킨다.

- 도커는 격리만 한다.

 

도커의 특징 - 확장성/이식성

- 도커가 설치되어 있다면 어디서든 컨테이너를 실행할 수 있음

- 특정 회사나 서비스에 종속적이지 않음

- 쉽게 개발서버를 만들 수 있고 테스트서버 생성도 간편함

- 무료임..ㅋ

 

도커의 특징 - 표준성

- 도커를 사용하지 않는 경우 ruby, node.js, go, php로 만든 서비스들의 배포 방식은 제각각 다름

- 컨테이너라는 표준으로 서버를 배포하므로 모든 서비스들의 배포과정이 동일해짐

- capistrano?, fabirc? ftp ? ㅂㅂ

 

도커의 특징 - 이미지

- 이미지에서 컨테이너를 생성하기 때문에 반드시 이미지를 만드는 과정이 필요

- Dockerfile을 이용하여 이미지를 만들고 처음부터 재현 가능

- 빌드 서버에서 이미지를 만들면 해당 이미지를 이미지 저장소에 저장하고 운영서버에서 이미지를 불러옴

 

도커의 특징 - 설정관리

- 설정은 보통 환경변수로 제어함

- MYSQL_PASS = password와 같이 컨테이너를 띄울 때 환병변수를 저장해서 사용

- 하나의 이미지가 환경별수에 따라 동적으로 설정파일을 생성하도록 만들어져야함

 

도커의 특징 - 자원관리

- 컨테이너는 삭제 후 새로 만들면 모든 데이터가 초기화 됨

- 업로드 파일을 외부 스토리지와 링크하여 사용하거나 S3같은 별도의 저장소가 필요

- 세션이나 캐시를 memcached나 redis와 같은 외부로 분리

 

도커가 가져온 변화

- 클라우드 이미지보다 관리하기 쉬움

- 다른 프로세스와 격리되어 가상머신처럼 사용하지만 성능저하 (거의) 업승ㅁ

- 복잡한 기술(namespace, cgroups, network, ..)을 몰라도 사용할 수 있음

- 이미지 빌드 기록이 남음

- 코드와 설정으로 관리 > 재현 및 수정 가능

- 오픈소스 > 특정 회사 기술에 종속적이지 않음

 

 

도커의 미래 (컨테이너의 미래)

- kubernetes

- 여러대의 서버와 여러개의 서비스를 관리하기 쉽게

 

스케줄링

- 컨테이너를 적당한 서버에 배포해 주는 작업

- 여러 대의 서버 중 가장 할일 없는 서버에 배포하거나  그냥 차례대로 배포 또는 아예 랜덤하게 배포

- 컨테이너 개수를 여러 개로 늘리면 적당히 나눠서 배포하고 서버가 죽으면 실행 중이던 컨테이너를 다른 서버에 띄워줌

 

클러스터링

- 여러 개의 버러를 하나의 서버처럼 사용

- 작게는 몇 개 안 되는 서버부터 만헥는 수천 대의 서버를 하나의 클러스터로

- 여기저기 흩어져 있는 컨테이너도 가상 네트워크를 이용하여 마치 같은 서버에 있는 것처럼 쉽게 통신

 

서비스 디스커버리

- 서비스를 찾아주는 기능

- 클러스터 환경에서 컨테이너는 어느 서버에 생성될지 알 수 없고 다른 서버로 이동 할 수도 있음

- 따라서 컨테이너와 통신을 하기 위해서 어느 서버에서 실행 중인지 알아야 하고 컨테이가 생성되고 중지될 때 어딘가에 IP와 Port같은 정보를 업데이트 해줘야 함

- 키-벨류 스토리지에 정보를 저장할 수도 있고 내부 DNS서버를 이용

 

 

'dev > docker 정리' 카테고리의 다른 글

Docker 이미지 만들기  (0) 2024.04.29
Docker compose  (0) 2024.04.29
Docker 기본 명령어 volume(-v)  (0) 2024.04.29
Docker 기본 명령어 - Run 컨테이너 실행  (1) 2024.04.28
Docker 설치하기  (0) 2024.04.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함