Docker 용어

한상우·2022년 7월 17일
0

프로젝트에 도커를 사용할 일이 생겨 오랜만에 봤는데, 햇갈리는 용어가 많아.. 잘 정리해야 겠다.
처음부터 공부한다는 마음으로 0부터 간단하게 정리하고자 한다.

도커란

도커는 컨테이너를 이용해서 프로세스를 격리시켜주는 도구이다. 이 도커 컨테이너 안에는 런타임, 라이브러리, 코드 등등 소프트웨어를 실행하는데 필요한 모든 것이 포함되어 있다.

도커를 통해 작업한 프로젝트를 환경에 구애받지 않고 구축, 배포, 테스트 할 수 있게 되는 것이다.
그렇다면, 컨테이너 란 무엇인가?

컨테이너

컨테이너에 대해 알아보기 전에 가상화에 대해 알아봐야 한다.
가상화는 하나의 하드웨어를 여러 개의 가상 머신으로 분할해 효율적으로 사용할 수 있는 기술인데,
분할된 가상 머신들은 각각 독립적인 환경으로 구동된다. 이때 기존의 하드웨어 환경을 Host OS 라 하고 가상머신으로 분할된 각 환경을 Guest OS 라고 부른다.

결론적으로 이 가상 머신 방식은 Hypervisor라는 소프트웨어를 거치기에 속도가 느리고, 해당 환경을 구동하는데 필요한 파일을 모두 포함하고 있기에 크기가 너무 큰 단점이 있다.

컨테이너는 가상의 OS를 만드는 것이 아닌, Host OS를 공유하면서 필요한 프로세스를 격리 시키기에, 호스트 입장에서는 단순히 프로세스가 실행되고 있다고 보여지고, CPU나 메모리 사용도 프로세스가 실행되는데 필요한 만큼만 사용되기 때문에 빠르고 효율적이다.

이미지

도커 이미지란 컨테이너를 만드는데 필요한 파일이나 설정값들을 포함하고 있는 것으로, 이미지를 통해 컨테이너를 만든다면 동일한 컨테이너를 만들 수 있는 것이다.

새로운 파일을 추가하거나 설정을 변경하고 싶다면, 기존의 이미지로 컨테이너를 만들고, 만들어진 컨테이너 안에서 변경을 하고, 새로운 이미지로 만들어 내면 된다.

도커 엔진

도커 엔진은 일반적으로 도커 라고 말하며, 도커의 핵심 소프트웨어로, 도커 데몬과 도커 클라이언트가 포함되어 있는 것이다.

도커 데몬이 서버로 떠있고, 도커 클라이언트(CLI)가 API 명령어를 보내면 실제 동작은 도커 데몬에서 이루어진다. 컨테이너 빌드, 실행, 배포 등 무거운 작업은 도커 데몬이 진행한다.

도커 네트워크

도커 네트워크는 도커 데몬이 실행중인 호스트 머신에서 컨테이너간 그리고 컨테이너와 외부 간의 통신을 설정하는데 사용된다.
도커는 컨테이너에 내부 IP를 순차적으로 할당하고, 내부 IP는 컨테이너를 재시작할 때마다 변경될 수 있다.
내부 IP는 도커가 설치된 호스트에서만 쓸 수 있으므로, 외부와 연결해야 한다.
컨테이너를 시작할 때마다 호스트에 veth라는 네트워크 인터페이스를 도커 엔진이 자동으로 생성
veth 인터페이스는 호스트가 갖고 있는 eth0, eth1 등과 연결
eth0: 공인 IP 또는 내부 IP가 할당되어 실제로 외부와 통신할 수 있는 호스트의 네트워크 인터페이스
docker0 브리지는 각 veth 인터페이스와 바인딩돼 호스트의 eth0 인터페이스와 이어주는 역할

profile
안녕하세요 ^^

0개의 댓글