docker 개요
container란
컨테이너랑 애플리케이션 레벨에서 필요한 소스 코드 라이브러리 등 모든 파일을 하나의 런타임 환경으로 패키징하는기술 일반 가상화와 컨테이너의 차이 컨테이너의 기반 기술 namespace 컨테이너에 대한 격리 계층 제공 cgroup 애플리케이션을 특정 리소스 사용세트 cpu,memory disk i/o 네트워크 로 제한
컨테이너의 장점
표준화에 따른 이식성 os 플랫폼 간 및 클라우드 간 이식 가능 경량화 및 민첩성 일반 가상화에 비해 가벼워 더 빠른 빌드 가능 신속한 확장성 같은 인프라에 더 많은 컨테이너 지원 가능 / 신속한 스케일링 지원
데브옵스 컨셉 인프라 빠르게 고객니즈에 반응하고 개선할수 있는 애자일한 빠르고 정확한 배포 시스템
docker 란
도커란 컨테이너 가상실행 환경을 제공해주는 대표적인 오픈소스 플랫폼 lxc = linux kunnel namespace cgroup linux container engine
docker clinet host register docker cli -> docker deamon image 컨테이너를 정의하는 읽기 전용 템플릿 dockerfile 도커이미지를 생성하기 위한 명세서
쿠버네티스 도커지원중단 쿠버네티스는 cri 를 통해 컨테이너 런타임과 통신하는데 도커는 해당 인터페이스를 지원하지 않아 dockershim이라는 추가 레이어를 연동했는데 이에 새로운 추가적인 레이어를
oci 도커가 내부적으로 컨테이너 런타임인 Runc(low-level) containerd(high-levle)를 사용하는데 containerd로도 kubernetes를 구동ㅇ할수있기 때문에 굳이 cri 호환도 안되고 성는 오버헤드가 있는 docker를 사용할 이유가 없음
도커 빌드 결과물인 image는 oci open container initiative 컨테이너에 대한 ㅎ표준을 만들고 이를 통일하기 위한 조직이자 프로젝트 스펙을 따르기 때문에 이표준을 따르는 containerd cri-o같은 컨테이너런타임과 호환
dockerfile 작성
명령어 | 설명 |
---|---|
from | 기반 이미지 지정 |
maintainer | 이미지관리자 정보표시 현재는 label을 더 많이 사용 |
label | 이미지의 메타데이터지정 |
USER | 명령어 실행 계정 |
WORKDIR | 명령어를 실행할 작업디렉토리 지정 |
RUN | 컨테이너안에명령어를실행 |
EXPOSE | 컨테이너실행시LISTEN할포트지정 |
ADD | 파일을이미지에추가 |
COPY | 로컬디렉터리에서 읽어 들인 컨텍스트로부터이미지에파일을복사 |
CMD | 컨테이너 기동시 실행할 명령어 인수 |
ENTRYPOINT | 컨테이너 기동시 실행할 명령어 |
docker push
docker login docker push leesanghoon94/sample-apache:0.1