[Docker] 기본 개념
Docker란?
도커는 2013년 3월 산타클라라에서 열린 Pycon Conference에서 dotCloud의 창업자인 Solomon Hykes가 The future of Linux Containers 라는 세션을 발표하면서 처음 세상에 알려졌습니다.
도커는 컨테이너 기반의 오픈소스 가상화 플랫폼입니다
여기서 컨테이너 라고하는것은 다양한 물건을 쉽게 옮길 수 있는 박스와 비슷하다고 볼 수 있습니다.(즉 우리가 생각하는 컨테이너)
서버에서 이야기하는 컨테이너도 이와 비슷한데 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해줍니다. 백엔드 프로그램, 데이터베이스 서버, 메시지 큐등 어떤 프로그램도 컨테이너로 추상화할 수 있고 조립PC, AWS, Azure, Google cloud등 어디에서든 실행할 수 있습니다.
docker가 활성화 되기 전에는 VM이라는 방식을 사용했습니다.
우리에게 익숙한 VMware나 VirtualBox같은 가상머신은 호스트 OS위에 게스트 OS 전체를 가상화하여 사용하는 방식입니다.
이 방식은 여러가지 OS를 가상화(리눅스에서 윈도우를 돌린다던가) 할 수 있고 비교적 사용법이 간단하지만 무겁고 느려서 운영환경에선 사용할 수 없었습니다.
Docker는 CPU나 메모리는 딱 프로세스가 필요한 추가로 사용하고 성능적으로도 손실이 없습니다.
마치 가벼운 VM을 사용한듯한 느낌을 줍니다.
실행중인 컨테이너에 접속하여 명령어를 입력할 수 있고 apt-get이나 yum으로 패키지를 설치할 수 있습니다.
docker exec -it <컨테이너 아이디 && 이름>
또한 컨테이너의 에서 동작하는 Tool의 log를 볼 수 있습니다.
docker logs <컨테이너 아이디 && 이름> ----------------> 로그 한번만 보여줌
docker logs -f <컨테이너 아이디 && 이름> -------------> 로그를 지속적으로 보여줌
Docker 이미지
도커에서 중요한 개념중 하나인 이미지 입니다.
이미지는 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것을 의미합니다.
docker-compose와 Dockerfile의 차이
docker-compose.yml --> 컨테이너 생성
Dockerfile --> 이미지 생성
도커 이미지는 Docker hub에 등록하거나 Docker Registry 저장소를 직접 만들어 관리할 수 있습니다. 현재 공개된 도커 이미지는 50만개가 넘고 Docker hub의 이미지 다운로드 수는 80억회에 이릅니다. 누구나 쉽게 이미지를 만들고 배포할 수 있습니다도커 이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 보통 용량이 수백메가MB에 이릅니다. 처음 이미지를 다운받을 땐 크게 부담이 안되지만 기존 이미지에 파일 하나 추가했다고 수백메가를 다시 다운받는다면 매우 비효율적일 수 밖에 없습니다
이러한 문제를 해결하기 위해 레이어(layer) 라는 개념을 사용했습니다.
참고 사이트 : https://subicura.com/2017/01/19/docker-guide-for-beginners-2.html