1 분 소요


docker docs 의 Orientation and setup 을 정리한 글입니다.




시작하기

터미널에서 다음 명령을 실행합니다:

docker run -dp 80:80 docker/getting-started
  • 명령에 포함된 플래그에 대한 설명입니다:
    • d: 컨테이너를 detached mode(background) 에서 실행합니다
    • p 80:80: {호스트 포트}:{컨테이너 포트} 형식으로
      호스트 포트 80 을 컨테이너 포트 80 에 매핑하여 컨테이너를 노출(expose)합니다.
    • docker/getting-started - 사용할 이미지입니다.


컨테이너를 확인하기 위해 브라우저에서 다음 URL을 오픈합니다:

http://localhost

그림. 도커 시작하기




컨테이너란?

간단히 설명하면, 컨테이너는 호스트 시스템의 다른 프로세스들과 격리된 시스템의 샌드박스 프로세스입니다.

이 격리(Isolation)는 Linux 의 Kernel namespaces 및 cgroups 기능을 활용합니다.

컨테이너를 요약하면:

  • 이미지의 실행 가능한 인스턴스입니다.
      Docker API 또는 CLI를 사용하여 컨테이너를 생성, 시작, 중지, 이동 또는 삭제할 수 있습니다.
  • 로컬 머신, 가상 머신에서 실행하거나 클라우드에 배포할 수 있습니다.
  • 이식 가능(모든 OS에서 실행 가능)합니다.
  • 컨테이너는 서로 격리되어 있으며 자체 소프트웨어, 바이너리 및 구성을 실행합니다.

컨테이너 처음부터 만들기
Aqua Security의 Liz Rice는 Go에서 컨테이너를 처음부터 어떻게 만드는 지에 대해 강연을 했습니다.
이 강연은 네트워킹, 파일 시스템용 이미지 사용 및 기타 고급 주제에 대해 다루지 않지만 작동 방식에 대한 환상적인 심층 분석을 제공합니다.

https://youtu.be/8fi7uSYlOdc

Namespace는 특정 프로세스 집합이 특정 리소스 집합을 볼 수 있도록 커널 리소스를 분할하는 Linux 커널의 기능입니다.
From: Linux namespaces




컨테이너 이미지란?

컨테이너를 실행할 때 격리된 파일 시스템을 사용합니다.
이 커스텀 파일 시스템은 컨테이너 이미지에 의해 제공됩니다.
이미지에는 컨테이너의 파일 시스템이 포함되어 있으므로 앱을 실행하는 데 필요한 모든 것(모든 종속성, 구성, 스크립트, 바이너리 등)이 포함되어야 합니다. 또 이미지에는 환경 변수, 실행할 기본 명령, 및 기타 메타데이터와 같은 컨테이너에 대한 다른 구성도 포함되어 있습니다.

Info:
chroot에 익숙하다면 컨테이너를 chroot의 확장 버전으로 생각하세요.
파일 시스템은 단순히 이미지에서 가져옵니다.
하지만, 컨테이너는 chroot를 사용할 때는 없었던 추가 격리를 제공합니다.




참고자료

댓글남기기