개요

docker rundocker build 등의 명령과 그 명령에 의해 실행되는 이미지 빌드, 컨테이너 실행하는 등의 다양한 작업

요소 : Docker CLI, Docker Engine API, Docker Demon

 

Docker CLI

  • Docker 명령을 실행하는 커멘드 라인 도구
  • CLI에 입력된 명령에 따라 Docker Engine API를 호출

Docker Demon

  • Linux  demon process에서 Docker Engine API가 호출되는 것을 기다리고 있다가, 호출된 Docker Engine API에 따라 이미지의 빌드 및 컨테이너의 시작 등을 실행

 

Unix socket 통신 & TLS 통신

  • Docker CLI가 Docker 호스트 안에 있는 경우 Unix socket을 이용해 Docker Demon과 통신
    • Unix socket은 동일한 시스템에 있는 프로세스끼리 통신을 할 수 있는 구조
    • docker-machine ssh 명령을 사용해 Docker 호스트에 로그인한 후 Dokcer 호스트에 있는 Docker CLI 명령 실행
  • Docker CLI가 Docker 호스트 밖에 있는 경우 TCP socket을 사용해 Docker Demon과 통신
    • HTTP를 그대로 이용하는 것이 아니라, 어떠한 보안 대책을 실시하는 것을 추천
    • 그중 하나가 TLS, HTTP를 암호화된 HTTPS 통신을 실시하는 것과 동시에 클라이언트와 서버를 신뢰할 수 있는 것
    • Docker Machine을 사용하여 Docker 호스트를 작성한 경우 인증서 만들기 등의 작업이 자동으로 이루어짐

 

❗ 통신 과정을 실습해볼려면 참고하자! ❗

http://www.devkuma.com/books/pages/1546

 

프로그램 개발 지식 공유, devkuma

데브쿠마는 프로그래밍 개발에 대한 지식을 공유합니다.

www.devkuma.com

 

'Container' 카테고리의 다른 글

[Docker] Docker Swarm  (0) 2021.09.11
[Docker] Docker Machine  (0) 2021.09.11
[Docker] Docker Compose  (0) 2021.09.11
[Docker] Docker 구조  (0) 2021.09.11
[Docker] 개념  (0) 2021.09.11

Docker Component

  • Docker Engine : 핵심 기능

 

  • Docker Registry : 이미지 공개 및 공유
  • Docker Compose : 여러 개의 컨테이너 구성 정보를 코드로 정의, 명령을 실행함으로써 애플리케이션의 실행환경을 구성하는 컨테이너들을 관리하기 위한 툴
  • Docker Machine : 클라우드 환경에 Docker의 실행환경을 명령으로 자동 생성하기 위한 툴
  • Docker Swarm : Docker 호스트를 클러스터링 하기 위한 툴

Docker 기술

  • Namespace
    • 접속한 게스트 별로 독립적인 공간을 제공하고 서로가 충돌하지 않도록 리소스를 격리시킴
    • Mnt(파일 시스템 마운트): 호스트 파일 시스템에 구애받지 않고 독립적으로 파일 시스템을 마운트 하거나 원마운트 가능
    • Pid(프로세스): 독립적인 프로세스 공간 할당
    • Net(네트워크): namespace 간에 network 충돌 방지
    • Ipc(System IPC): 프로세서 간의 독립적인 통신 통로 할당
    • Uts(hostname): 독립적인 hostname 할당
    • User(UID): 독립적인 사용자 할당
  • Cgroup(Control Groups)
    • 제어 가능 리소스: 메모리, CPU, I/O, 네트워크, Device 노드(/dev/)
    • 자원에 대한 제어를 가능하게 해주는 리눅스 커널의 기능
    • 시스템의 자원 할당, 우선순위 지정, 거부, 관리, 모니터링 등의 제어 기능을 수행 → 자원의 효율성 향상
    • 단순 제공, 실제 자원 분배를 위해선 각 자원마다 해당하는 서브시스템이 필요
  • Union File System(UFS)
    • 도커가 관리하는 각 Layer에서 각 컨테이너가 이용할 수 있는 독립된 파일 시스템 블록
    • 리눅스 커널이 제공하는 것이 아니어서 Linux 종류별로 다른 형태를 제공
  • Container Format
    • Docker Engine을 구성하는 핵심 기술 스택인 namespace, cgroup, UFS는 컨테이너를 이용하기 위한 Container Wrapper를 갖고 있으며 이를 맞추기 위한 Container Format을 관리하게 됨(default: libcontainer)

 

네트워크 구성(virtual bridge/ virtual NIC)

 

 

 

https://docs.docker.com/get-started/overview/

 

Docker overview

 

docs.docker.com

 

'Container' 카테고리의 다른 글

[Docker] Docker Swarm  (0) 2021.09.11
[Docker] Docker Machine  (0) 2021.09.11
[Docker] Docker Compose  (0) 2021.09.11
[Docker] Docker Engine  (0) 2021.09.11
[Docker] 개념  (0) 2021.09.11

Docker

 

"Go언어로 작성된 리눅스 컨테이너 기반으로 하는 오픈소스 가상화 플랫폼"

 

Linux Container

운영체제 수준의 가상화 기술로 리눅스 커널을 공유하면서 프로세스를 격리된 환경에서 실행하는 기술

docker container / virtual machine

 

특징

  • 운영체제 수준의 가상화 기술(게스트 OS 관리가 필요 없음)
  • 빠른 속도와 효율성(하드웨어 에뮬레이션이 없음)
  • 높은 이식성(portability, 컨테이너 각각의 독자적인 실행환경)
  • 상태를 가지지 않음(stateless, 다른 컨테이너에게 영향을 주지 않음)

종류

  • System Container
    • 컨테이너 기술들을 사용해 운영체제 위에 하드웨어 가상화 없이 운영체제를 실행
    • 다수의 프로세스가 같은 환경을 공유하는 것이 목표
    • LXC, LXD
  • Application Container
    • 컨테이너 기술을 활용해 하나의 애플리케이션을 실행하는 것이 목표
    • 단 하나의 프로세스만 실행한다
    • Docker

 

❗ 컨테이너라는 말이 정확하게 정의되어 있지는 않은 느낌! 다 각자 설명들이 미세하게 다름... 그냥 그림으로 나는 이해해야겠다! ❗

 

Docker Image

컨테이너를 실행할 수 있는 실행파일, 설정 값들을 가지고 있는 것

"Image를 Container에 담고 실행시키면 해당 프로세스가 동작"

 

Docker File

이미지 생성 출발점, 이미지를 구성하기 위한 명령어들을 작성하여 이미지를 구성할 수 있다.

 

❗ 즉, Docker File을 읽을 수 있으면 해당 이미지가 어떻게 구성되어 있는지 알 수 있음! ❗

 

Docker Hub & Docker Registry

허브에서는 이미지를 저장하고 관리해준다.

https://hub.docker.com/

 

Docker Hub Container Image Library | App Containerization

We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more about how this site uses Cookies by reading our privacy policy

hub.docker.com

 

❗ 사용해보니 GitHub와 유사, push, pull 명령어 사용!! ❗

 

Docker Archtecture

❗ 내가 더 유심하게 봐야하는 부분은 "HOST", 왜냐면 내가 배포를 해야하니까!! ❗

'Container' 카테고리의 다른 글

[Docker] Docker Swarm  (0) 2021.09.11
[Docker] Docker Machine  (0) 2021.09.11
[Docker] Docker Compose  (0) 2021.09.11
[Docker] Docker Engine  (0) 2021.09.11
[Docker] Docker 구조  (0) 2021.09.11

+ Recent posts