728x90
반응형
도커 동작
- OS 위에 도커 엔진이 동작 → 도커 엔진 위에서 컨테이너 동작 → 컨테이너 안에서 OS와 비슷한 것이 동작
- 기본적으로, 리눅스에서 동작을 전제로 한다.
- 가상 머신을 통해 리눅스를 컨테이너에 설치하여, windows나 macOS용 SW도 컨테이너 안에서 동작 가능
cf. OS( Operating System ): SW나 프로그램의 명령을 HW에 전달하는 역할
cf. 리눅스( Linux ): 서버용 OS의 일종, RedHat, CentOS, Ubuntu 등
cf. 가상 머신( Virtual Machine ): SW로 OS를 구축하는 SW, windosw에서 linux를 사용하는 등의 상황에서 사용, VirtualBox, VMware 등
도커 허브: 인터넷 상에 도커 이미지를 모아놓은 곳( https://hub.docker.com )
- 무료 컨테이너 이미지가 모여있는 곳
- 운영체제(비슷한 것)만 들어있는 이미지부터, 여러 SW가 포함된 것까지 다양함
- 하지만, 누구나 이미지를 등록할 수 있기에, 안전한 이미지를 선택하는 게 중요
- 공식 이미지 사용: 도커에서 제공 or sw를 개발 및 관리하는 조직이나 기업에서 제공
- 이미지를 직접 만들어 사용
- 경험이 쌓이기 전까진 신중하게 이미지 선택
이미지: 컨테이너를 만드는 '빵틀' 같은 것으로, 컨테이너의 설계도 역할
- OOP의 class라고 생각해도 될 거 같다
이미지와 컨테이너
- 컨테이너를 생성하려면, 이미지를 만들어야 한다.
- 이미지가 있다면, 똑같은 컨테이너 생성 가능
- 생성한 컨테이너를 필요에 맞게 수정 후, 해당 컨테이너로 이미지를 만드는 것도 가능
- e.g. 인터넷에서 가져온 이미지로 컨테이너 생성 → 프로젝트나 회사에서 필요에 맞게 컨테이너 수정 → 이미지 생성 →반복 작업 수 감소
- 1개의 컨테이너에는 1개의 프로그램만!
- 데이터 관리, 보안, 유지보수에 용이
- 맛보기 프로그램을 고객에게 제공하는 등의 상황에선, 1개의 컨테이너에 여러 프로그램을 포함시키기도 함
컨테이너의 생애주기(수명)
- 한 번 쓰고 버리는 일회용품 같은 것
- 컨테이너 1개를 업데이트하면서 사용하는 게 아닌, 업데이트 된 SW를 포함한 컨테이너 사용이 올바름
- 실제로는, 여러 컨테이너가 가동되고 있으므로, 여러 컨테이너를 하나하나 업데이트 하는 것은 비용이 큼
- 생애주기: 컨테이너 생성 → 실행 → 종료 → 폐기 → 생성
컨테이너에서의 데이터 관리
- 컨테이너 폐기 시, 컨테이너 내에서 편집한 데이터는 사라짐
- 따라서, 도커가 설치된 물리적 서버(e.g PC)의 디스크를 마운트하여, 디스크에 데이터 저장( 컨테이너 폐기 전에)
- 마운트: 디스크를 연결해 데이터를 기록할 수 있도록 한 상태
- 도커 엔진이 고장나더라도, 데이터는 그대로 보존됨
- 이렇게 외부( 디스크 )에 데이터를 저장하면, 다른 컨테이너와의 데이터 공유 용이( config 파일 등 )
- 다른 관점으론, 중요 데이터가 디스크가 아닌 컨테이너 내부에 저장되지 않도록 주의 필요
도커의 장점
- 1대의 물리 서버에, 여러 대의 서버( 컨테이너에 담긴 )를 가동시킬 수 있음
- 컨테이너를 이용하면, 각 SW를 독립된 환경에 격리한다.
- 다른 SW에 영향 없음
- 업데이트 간단
- 물리 서버의 OS에 의존하므로, 컨테이너에는 커널( OS의 핵심 )이 포함되지 않아 가볍다.
- 이미지를 만들 수 있어, 반복 작업이 줄고, 교체와 업데이트가 쉽다.
- 이로 인해, 환경 이동과 개발환경 구축하기 쉽다.
- 또한, 컨테이너로 이미지 생성이 되어, 원하는 컨테이너 대량 생산 가능
- 터미널에 명령을 직접 입력해야 한다는 것 이외에는, 다루기 쉽다.
도커의 단점
- 리눅스용 SW만 지원하여, 유닉스나 windows 등 다른 OS용 SW를 사용하려면 가상머신을 이용해야 한다.
- 1대의 물리 서버에 여러 컨테이너를 동작시키므로, 물리 서버에 문제가 생기면 그 위에 있는 모든 서버로 전이됨
- 물리 서버의 이상적인 동작을 위한 대책 필수
- 컨테이너 하나를 장기간에 걸쳐 사용 시, 도커를 사용해야 하는 합리적 이유를 찾기 어려움
도커의 주 용도
- 팀원 모두에게 동일한 개발환경 제공
- 격리된 컨테이너 안에서, 새로운 버전의 테스트( e.g. 알고리즘 변경, library 업데이트 및 변경 )
- 동일한 서버가 여러 대 필요한 경우, 명령 한줄로 가능
728x90
'docker & kubernetes' 카테고리의 다른 글
도커 설치하기 3 | Docker&Kubernetes 학습 6 (0) | 2024.11.09 |
---|---|
도커 설치하기 2 | Docker&Kubernetes 학습 5 (2) | 2024.11.08 |
도커 설치하기 1 | Docker&Kubernetes 학습 4 (0) | 2024.11.07 |
도커(docker)와 서버(server)의 관계 | Docker&Kubernetes 학습 2 (2) | 2024.10.12 |
도커(Docker)와 컨테이너(Container)란? | Docker&Kubernetes 학습 1 (0) | 2024.10.09 |