Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 티스토리
- 프로그래머스
- Open API
- Spring Boot
- CleanCode
- 크레인 인형뽑기 게임
- Tistory
- 알고리즘
- 보행자 천국
- 트라이 #trie #알고리즘
- 호텔 방 배정
- 카카오 인턴
- Python
- 가사 검색
- 티스토리 open api
- jdbc
- pycon
- trie
- 징검다리 건너기
- 불량 사용자
- 트라이
- 튜플
- bulk update
Archives
- Today
- Total
택시짱의 개발 노트
Docker 공부.. 본문
Docker과 VM의 차이
- Docker의 컨테이너는 같은 독립된 프로세스를 이용하여 kernel을 공유 하는 반면, VM의 경우 하드웨어의 독립을 이용하여 독립된 kernel 공간을 가진 OS를 생성해 가상화 기능을 제공 한다.
VM
- VM 이란?
- VM은 호스트 OS위에 게스트 OS를 가상화 하여 사용하는 방식이다.
게스트 OS는 호스트 OS의 자원을 할당 받아 Hperviosr를 이용해 가상화 하게 된다. Hypervisor는 호스트 시스템에서 다수의 게스트OS를 구동할 수 있게 해주는 소프트웨어 이다.
- VM은 호스트 OS위에 게스트 OS를 가상화 하여 사용하는 방식이다.
장점
- 호스트 OS와 게스트 OS의 완전한 독립이 가능
- 완전한 독립이 가능 하기 때문에 window os에서 linux의 가상화가 가능함
- 호스트 OS와 게스트 OS의 완전한 독립이 가능
단점
- 속도의 저하
- 호스트 OS와 리소스 분할하여 OS위에 OS를 설치하기 때문에 속도가 저하 된다.
Docker
- Docker 란?
- 리눅스의 Container 기술을 이용해 가상머신처럼 하드웨어의 자원을 완전히 가상화 하지 않고 프로세스들만을 격리시켜 빠르게 어플리케이션 환경을 구축 및 배포할 수 있게 해주는 기술
Docker image
- Docker image 란?
- Docker image는 Container 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 상태값을 가지지않고 변하지 않는다. Container는 image를 실행한 상태라고 볼 수 있다. 같은 image에서 여러개의 Container를 실행할 수 있고 Container가 변해도 image는 변하지 않는다.
Docker Container
- Docker Container 란?
- 컨테이너란 격리된 공간에서 프로세스가 동작하는 기술이다. 기존의 가상화 기술은 OS를 가상화 했지만 컨테이너는 프로세스를 격리하는 방식이다. 단순히 프로세스를 격리시키기 때문에 다른 가상화 방식보다 가볍고 빠르다.
장점
- 성능상의 이점
- 도커는 실행에 필요한 파일과 라이브러리만을 포함하고 OS를 새로 설치할 필요가 없으므로 가볍고 성능의 저하가 거의 없다
- 성능상의 이점
- 빠른 운영환경 구성
- 미리 사용자들이 만들어 둔 이미지(개발환경)를 다운받아 실행만 하면 해당 환경을 구축할 수 있다.
- 빠른 운영환경 구성
- 관리의 용이
- 이미지 만을 관리 배포하면 되므로 운영환경의 관리가 용이하다
- 관리의 용이
- 확장성
- 한번 만들어낸 이미지를 이용하여 여러 서버들에서 사용가능하다.
- 확장성
Dockerfile의 선언문
- FROM : 어떤 이미지를 기반으로 할지 설정
- MAINTAINER : 이미지 작성자 정보
- RUN : 이미지에서 스크립트나 명령 실행
- CMD : 컨테이너가 시작되었을 때 스크립트나 명령 실행
- ENTRYPOINT : 컨테이너가 시작되었을 때 스크립트나 명령 실행( docker run 에서 처리 방식이 다름 )
- EXPOSE : 호스트와 연결할 포트 번호 설정
- ENV : 환경 변수 설정
- ADD, COPY : 이미지에 파일 추가
- VOLUME : 데이터를 호스트에 저장하도록 설정
- USER : 명령을 실행할 사용자 계정 설정
- WORKIR : 명령을 실행할 디텍터리 설정
- ONBUILD: FROM 으로 이미지가 사용될 때 실행할 명령 설정
CMD 와 ENRYPOINT의 차이점
CMD와 ENTRYPOING란 무엇인가
- ENRYPORINT와 CMD는 해당 컨테이너가 수행하게 될 실행 명령을 정의하는 선언문 이다. 즉, 컨테이너가 무슨 일을 하는지 결정하는 최동 단계를 정의하는 명령이라고 생각하면 된다. 그렇기 때문에 Dockerfile의 가장 마지막 부분 쯤에 Entrypoint또는 CMD를 선언하게 된다.
CMD와 ENTRYPOINT 차이점
- CMD와 ENTRYPOINT의 가장 큰 차이점은 바로 컨테이너 시작시 실행 명령에 대한 Default 지정 여부 이다.
만약 ENTRYPOINT를 사용하여 컨테이너 수행 명령을 정의한 경우, 해당 컨테이너가 수행될 때 반드시 ENTRYPOINT에서 지정한 명령을 수행되도록 지정 된다.
하지만, CMD를 사용하여 수행 명령을 하는 경우에는, 컨테이너를 실행할때 인자값을 주게 되면 Dockerfile에 지정된 CMD 값을 대신하여 지정한 인자값으로 변경하여 실행되게 된다.
- CMD와 ENTRYPOINT의 가장 큰 차이점은 바로 컨테이너 시작시 실행 명령에 대한 Default 지정 여부 이다.
CMD와 ENTRYPOINT의 올바른 사용 방법
- 컨테이너가 수행될 때 변경되지 않을 실행 명령은 CMD 보다는 ENTRYPOINT로 정의하는게 좋다.
- 메인 명령어가 실행시 default option 인자 값은 CMD로 정의해 주는게 좋다.
- 결론. ENTRYPOINT는 컨테이너 시작시 무조건 실행이 되어야 하는 명령를 설정할때 사용하고, CMD는 변경이 될수도 있는 명령어에서 default 값으로 설정하여 사용하는 것이 좋다.
반응형
Comments