컨테이너 기반 가상화 도구 --> 어플리케이션을 컨테이너라는 단위로 격리하여 실행하고 배포하는 기술
리눅스 컨테이너 기술인 LXC(Linux Containers)를 바탕으로 만들어짐
그럼에도 불구하고 다양한 운영체제에서 사용할 수 있으며 일단 어플리케이션이 컨테이너화 되면, 손쉽게 빌드, 배포, 관리할 수 있는 다양한 기능을 제공한다.
그와 같은 도커의 기능들을 통해 애플리케이션을 빠르게 개발하고 효율적으로 배포, 관리할 수 있다.
애플리케이션을 인프라에서 분리해서 SW를 신속하게 제공
인프라를 애플리케이션처럼 관리할 수 있도록 해준다
그렇다면 Container 란 무엇일까?
가상화 기술의 일종으로, 호스트가 되는 운영체제 위에 다수의 격리된 환경을 생성하여 각각의 컨테이너들은 애플리케이션을 서로 독립적으로 실행
쉽게 말해 독방이다.
독방 사이에 서로 통신은 가능함
하나의 물리적인 컴퓨터 자원을 가상적으로 분할하여 여러 개의 가상 컴퓨터 환경을 만들어 내는 기술.
물리적인 자원을 더 효율적으로 사용할 수 있으며, 서버나 어플리케이션 등을 운영하는 데 있어 유연성과 안정성을 제공한다.
Hypervisor
VM을 생성하고 구동하는 소프트웨어
운영체제에 자원을 할당 및 조율 :: GuestOS 도 자원을 잡아먹는데, 하이퍼바이져가 이를 넘겨주는 것
운영체제들의 요청을 번역하여 하드웨어에 전달한다.
GuestOS가 점유하는 시스템 자원이 있는 Hypervisor 방식은 컨테이너 기반 가상화 기술과 비교했을 떄 오버헤드가 있다 --> 중복된 자원 관리가 발생하게 되어 비효율적
GuestOS + Hypervisor = Container Engine
1. Docker daemon (= dockerd)
2. Docker Cilent
3. Docker Object
4. Docker Registries
docker pull imagename:tag
예) docker pull httpd
httpd 이미지를 받아온다.
docker run -p 8888:80 httpd
도커 컨테이너를 실행 시키는 데 로컬 8888로 container 80 포트와 퍼블리싱으로 httpd 이미지를 실행주세요
docker run -itd -p 8888:80 httpd
도커 컨테이너를 실행시키는 데 대화형터미널 백그라운드 옵션을 주면서 로컬 8888로 container 80 포트와 퍼블리싱으로 httpd 이미지를 실행주세요
docker run -itd -v localfilepath:containerpath -p 8888:80 httpd
로컬환경에 파일을 컨테이너 파일에 마운트 시켜주시고 포트를 로컬 8888로 container 80 포트와 퍼블리싱으로 httpd 이미지를 실행시켜주세요
docker images
도커 이미지 전체를 조회
docker rmi image
도커 이미지 삭제 진행
docker build .
(현재 디렉토리에 있는) Dockerfile을 이미지화 시켜주세요
docker build -t httpd:test1 .
Dockerfile을 이미지화 시켜주시는데 httpd 이미지 이름과 test1이라는 태그를 달고 진행해주세요
-itd에
-i는 대화형
-t 터미널
-d detach라고 하는 백그라운드 형식을 나타냅니다.
출처 ::
The Docker Container Lifecycle | Docker made easy #3, 생활코딩유튜부