도커
도커는 애플리케이션을 컨테이너화하여 개발, 배포 및 실행을 간소화하는 오픈 소스 플랫폼임.
컨테이너는 소프트웨어를 실행하는 데 필요한 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정을 포함하는 표준화된 유닛임.
도커를 사용함으로써 개발자는 애플리케이션이 다양한 환경에서도 일관되게 동작할 것임을 확신할 수 있음.
도커의 주요 구성 요소
1. 도커 엔진
1.1 설명
도커의 핵심 소프트웨어로서, 도커 이미지를 실행하여 도커 컨테이너를 생성하는 역할을 함.
1.2 구성
서버(도커 데몬), REST API, 클라이언트(CLI 인터페이스)로 구성됨
2. 도커 이미지
2.1 설명
읽기 전용 템플릿으로서, 컨테이너를 생성하는 데 사용됨.
2.2 특징
이미지는 여러 계층으로 구성되며, 각 계층은 이전 계층의 변경 사항만을 저장함.
이 구조는 저장 공간을 효율적으로 사용하게 함.
3. 도커 컨테이너
3.1 설명
이미지를 기반으로 실행되는 경량의 실행 환경임.
3.2 특징
컨테이너는 소프트웨어를 격리된 환경에서 실행함.
다른 컨테이너와 운영 시스템과는 독립적으로 동작함.
도커의 기능 및 이점
1. 이식성
도커 컨테이너는 어느 환경에서나 동일하게 실행됨.
개발, 테스트, 프로덕션 환경이 달라도 동일한 컨테이너를 사용하여 호환성 문제를 최소화할 수 있음.
2. 경량성
컨테이너는 가상 머신보다 훨씬 적은 자원을 사용하고, 시스템을 느리게 하지 않으면서 빠르게 시작할 수 있음.
3. 데브옵스 & CI/CD
도커는 데브옵스 문화와 지속적 통합/배포를 촉진함.
도커 이미지는 빌드와 테스트가 용이하여 빠른 소프트웨어 개발과 배포를 가능하게 함.
도커와 관련된 기술
1. 도커 컴포즈
여러 컨테이너로 구성된 애플리케이션을 정의하고 실행하기 위한 도구임.
YAML 파일을 사용하여 서비스, 네트워크, 볼륨 등을 정의함.
2. 도커 스웜
도커의 네이티브 클러스터링 기능임.
여러 도커 호스트를 하나의 가상 도커 호스트로 관리할 수 있음.
3. 쿠버네티스
구글이 개발한 컨테이너 오케스트레이션 도구임.
대규모 컨테이너 관리에 사용됨.
도커와 결합하여 확장성과 자동화를 제공함.
도커 사용 사례
1. 웹 애플리케이션
도커는 개발, 테스트, 프로덕션 환경에서의 일관된 실행을 보장함.
웹 서버, 데이터베이스, 캐시 등 다양한 컴포넌트를 포함하는 웹 애플리케이션의 배포를 간소화함.
2. 마이크로서비스
각 마이크로서비스를 독립된 컨테이너로 패키징하여 서비스 간의 격리를 보장하고, 각 서비스의 독립적인 확장과 업데이트가 가능함.
도커 정리
도커는 기술 스택 전반에 걸쳐 유연하고 효율적인 솔루션을 제공함.
현대적인 소프트웨어 개발과 인프라 관리의 표준으로 자리잡음.
도커 네트워크
도커 네트워크는 도커 컨테이너 간의 통신과 외부 네트워크와의 연결을 관리하는 중요한 부분임.
도커는 다양한 내장 네트워크 드라이버를 제공하여 컨테이너화된 애플리케이션의 네트워킹 요구사항을 지원함.
이러한 드라이버는 각각의 사용 사례에 맞게 특화된 기능과 설정을 제공함.
도커 네트워크 드라이버
1. 브릿지
1.1 기본 네트워크
도커 설치 시 기본적으로 생성되는 브릿지 네트워크를 사용하거나 사용자 정의 브릿지를 생성할 수 있음.
1.2 사용
각 컨테이너는 브릿지를 통해 서로 통신하며, 호스트 머신과도 통신할 수 있음.
1.3 특징
NAT을 통해 컨테이너에 IP주소를 할당하고, 호스트 머신의 포트를 컨테이너 포트에 매핑함.
2. 호스트
2.1 사용
이 드라이버를 사용하면 컨테이너가 호스트의 네트워킹 네임스페이스를 직접 사용함.
2.2 특징
추가적인 네트워크 격리 없이, 컨테이너가 호스트 머신과 동일한 IP 주소와 포트를 사용함.
3. 오버레이
3.1 사용
다중 도커 호스트 간에 컨테이너를 연결하기 위해 사용됨.
스웜 모드에서 특히 유용함.
3.2 특징
오버레이 네트워크는 네트워크 패킷을 캡슐화하여 여러 도커 데몬 간에 라우팅함으로써 컨테이너 간에 격리된 네트워크를 제공함.
4. MACVLAN
4.1 사용
컨테이너에 실제 물리 네트워크 인터페이스에 연결된 것처럼 고유한 MAC 주소를 할당할 때 사용함.
4.2 특징
네트워크 상에서 컨테이너가 실제 물리적 장치처럼 보이게 함.
일부 복잡한 네트워킹 상황에서 유용할 수 있음.
네트워크 격리 및 보안
1. 네트워크 격리
도커는 컨테이너 간의 트래픽을 격리하여 보안을 강화함.
사용자 정의 브릿지 네트워크는 컨테이너 간의 통신을 제한하여 보안을 추가적으로 강화할 수 있음.
2. 네트워크 정책
오버레이 네트워크를 사용하는 환경에서는 네트워크 정책을 정의하여 특정 서비스나 컨테이너 간의 트래픽을 제어할 수 있음.
네트워킹 명령어와 사용법
1. docker network create
새로운 네트워크를 생성함.
2. docker network ls
모든 네트워크를 나열함
3. docker network rm
네트워크를 삭제함
4. docker network inspect
네트워크의 상세 정보를 조회함.
고급 네트워킹 기능
1. DNS 서비스
도커는 컨테이너 간의 DNS 쿼리를 자동으로 처리하여, 컨테이너 이름을 사용하여 서로를 찾을 수 있음.
2. 포트 매핑
외부에서 컨테이너 내부로 트래픽을 라우팅하기 위해 특정 호스트 포트를 컨테이너 포트에 매핑함.
도커 네트워크 정리
도커의 네트워킹 기능은 컨테이너화된 애플리케이션의 배포와 관리를 더욱 유연하고 효율적으로 만들어 줌.
다양한 환경에서의 높은 수준의 통신과 보안을 제공함.
'Operating System > Docker' 카테고리의 다른 글
[Docker] 컨테이너가 실행중인지 확인하고 종료 및 삭제하는 쉘스크립트 (0) | 2023.05.31 |
---|---|
[Docker] bash: add-apt-repository: command not found 에러 해결 방법 (0) | 2022.10.07 |
[Docker] 표준 출력과 표준 에러 출력하지 않는 방법 > /dev/null 2>&1 (0) | 2022.10.07 |
[Docker] 우분투 파일설명자 정리 (0) | 2022.10.07 |
[Docker] 우분투에서 명령어 입력시 성공하면 success 실패하면 fail 출력하는 방법 (0) | 2022.10.07 |