1. 먼저 Docker란 무엇인가? 하는 질문이다.
Docker는 컨테이너기반 오픈소스 가상화플랫폼이다.
이게 무슨 말일까?
도커를 이용하면, 애플리케이션, 데이터베이스 서버 등을 이미지로 만들고, 해당 이미지로 컨테이너화하여 쉽게 실행시킬 수 있다.
여기서 첫번째 어떤 프로그램이던 컨테이너로 추상화할 수 있다. 이것이 컨테이너기반이라는 의미이고,
두번째, 도커는 컨테이너로 만들어 실행시킨 프로세스들을 격리시킨다. 여기에 가상화라는 의미가 담겨있다.
2. 도커는 도커 클라이언트와 도커 서버(데몬)로 구성되어있다.
docker version 또는 docker info를 쳐보면 client, server라는 명칭이 나온다.
도커 클라이언트는 단순히 명령어를 도커 서버에게 전달해주고,
해당 명령어를 읽고 이미지를 찾거나, 컨테이너를 만드는 일은 도커 서버가 해준다.
3. 도커 이미지의 구성
도커 이미지는 해당 프로그램을 돌릴 때 필요한 모든 것이 다 들어가있다.
docker run할 때 실행될 명령어와 파일 스냅샷으로 이루어져 있다.
도커 서버가 run명령을 받으면, 이미지에서 파일 스냅샷을 하드디스크에 올리고 실행할 명령어를 컨테이너에 올린 후 실행시킨다.
4. 도커는 리눅스기반 컨테이너로 가상화되어 있다. (각 자원들은 컨테이너별로 격리되어있다.)
아까전 docker version에서 Server의 OS/Arch를 보면 linux/amd64라고 되어있다.
윈도우에서 docker desktop을 깔았음에도 저렇게 되어있다. 도커서버는 리눅스에서 돌아가고 있다.
따라서 컨테이너로 가상화 할 때도 리눅스 기반으로 돌아가게 된다.
가상화를 할 때는 각각의 컨테이너들(프로세스)의 자원을 격리시키는 방법을 사용하는데, 리눅스 커널 기술인 cgroups와 namespace을 이용하여 가상화한다.
'살짝 정리' 카테고리의 다른 글
윈도우 git clone invalid path 에러 (1) | 2022.02.03 |
---|---|
도커 이미지 만들기 (0) | 2021.07.14 |
Git, reset과 revert (0) | 2021.06.30 |
AWS Cloud Practitioner Essentials 모듈1 (0) | 2021.06.29 |
컴포넌트의 내부 구현을 숨기자 (0) | 2021.06.26 |