Container 속속들이 알아보자
Container? Container Image?
Container
Container는 하나의 Application Process 이다.
Container 1개는 Application 1개이다. Container의 특징은 완전하게 독립되서 작동한다는 특징이 있다.
CPU, Memery, Network, Disc, Userid, HostName 등 모두 따로따로 독립적으로 분리되서 동작된다. 각 각 분리되어 있으므로 수정을 해도 다른 컨테이너에 영향을 주지 않는다.
Docker Host
Docker Host라는 것이 있다. 리눅스커널을 가지고 있는 시스템에다가 Docker를 설치해서 Docker Demon을 실행한다. 현재 Docker Demon이 동작되고 있는 리눅스 커널이 있는 시스템을 Docker Host라고 부른다.
Docker가 Container를 실행 할 수 있는 플랫폼을 만들어 놓았다는 것이다.
컨테이너들이 Docker Demon하에 동작하는 것이다.
커널은 하나 뿐이며 동일한 커널에서 여러개의 Container가 돌아간다.
Docker Host의 입장에서는 Container는 단순히 하나의 Process일 뿐이다.
Container Image
하나의 Application Container를 구조화 해서 보면 Container 안에는 Application을 실행하기 위한 설비가 들어가 있다.
컨테이너 이미지는 여러개의 Layer로 이루어 져 있으며, 하나의 애플리케이션 잘 실행될 수 있도록 모아져 있는 이미지들의 조합이 하나의 컨테이너 이미지가 된다.
Container Image
디스크에 하나의 파일 형태로 저장되어 있다.
Container
Container Image를 실행을 하면, 메모리에 Container로 하나의 Applications Process로 Running 되는 것이다.
컨테이너 동작 방식
hub.docker.com
컨테이너이미지를 저장해둔 공간이다.
Docker Host에서 Docker Demone이 동작중이다. Docker client 명령을 요청을 할 수 있다.
1.Docker Demon은 Docker hub에서 검색해서 리스트를 알려준다.
ex) docker search nginx or python
2.Docker Hub에서 이미지를 다운 받아 온다.
ex)docker pull nginx:latest or python:latest
3.Docker Image를 실행해서 Container로 만든다.
docker run -d --name 이름 -p 80:80 nginx:latest
저장된 이미지가 컨테이너 이미지라고 하고 컨테이너이미지를 통해 실행된 것이 컨테이너이다.
실습해보기
systemctl status docker
docker search 이미지이름:태그
docker pull 이미지이름:태그
var/lib/doker/overlay
docker images
docker run -d(백그라운) --name 이름(web) -p(포트) 80:80 이미지이름:태그
docker ps
crul localhost:80
docker stop 컨테이너이름(web)
docker rm 컨테이너이름(web)
docker rmi 이미지이름