컨테이너
기반의 오픈 소스 가상화 플랫폼
실행 가능한 인스턴스
서버(host OS) 운영상에서 리소스를 논리적으로 구분
하여 마치 별도의 서버인 것 처럼 사용할 수 있게 하는 기술OS
뿐만 아니라 Application
단위도 가능파일과 설정값등
을 포함하고 있는 변하지 않는 상태읽기전용(Read only)
레이어로 구성
제가 학교에서 공부할 땐 VMware를 통해 가상 서버를 올리고 테스트 하는 일이 많았어요~
회사에 들어와보니 Docker를 이용하였고, Docker의 이점을 더 알게됐어요.
무겁고 성능저하가 발생(오버헤드 발생)
Host OS를 자원을 처음부터 분리(물리적 구분)
시켜 사용하기 때문에 느리다.Host OS 자원(커널)을 공유(논리적 구분)
하기 때문에 Host OS 자원이 좋을 수록 빠르다.컨테이너로 실행된 프로세스는 커널을 공유하지만,
Linux namespaces
,컨트롤 그룹 (cgroup)
,루트 디렉터리 격리(chroot)
등의 커널 기능을 활용해 격리되어 실행된다.
한 덩어리의 데이터에 이름을 붙여 충돌 가능성을 줄이고, 쉽게 참조할 수 있게 하는 개념
Linux namespace는 커널에서 제공하고 있으며, 하나의 시스템에서 프로세스를 격리(Isolation)시킬 수 있는 가상화 기술
(--net host)
cgroup은 프로세스와 스레드를 그룹화하여, 그 그룹안에 존재하는 프로세스와 스레드에 대한 관리를 수행하기 위한 기능
호스트 OS의 CPU나 메모리와 같은 자원에 대해 그룹별로 제한을 둘 수 있다
docker는 호스트 서버의 물리적 네트워크와 Docker의 가상 네트워크가 혼합되어 네트워크가 이루어져 있다.
호스트 서버에서 Docker 에게 명령어를 전달하려면 네트워크로 연결되어 있어야 한다.
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:b4ff:fe55:60a4 prefixlen 64 scopeid 0x20<link>
ether 02:42:b4:55:60:a4 txqueuelen 0 (Ethernet)
RX packets 2870956323 bytes 229621298263 (213.8 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2857386536 bytes 270109230521 (251.5 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
docker가 실행
되면서 자동
으로 생성되는 가상의 네트워크 장치
이다.브릿지모드
로 동작하도록 되어있다.브릿지 모드
는 이 브릿지에 연결한 네트워크 장비들을 외부와 통신
하도록 해준다.virtual ethernet bridge
이다.bridge
host
overlay
📌 여담
📚 참고
도커는 사랑인데요.