[Docker] Docker란?

2024. 6. 13. 09:04·기타
목차
  1. Docker
  2. Virtual Machine VS Container
  3. Docker Image(도커 이미지)
  4. Docker Layer(도커 레이어)
  5. Docker Hub(도커 허브)

[Docker] Docker 기본 사용법 정리 - nicewoong

 

[Docker] Docker 기본 사용법 정리 - nicewoong

Docker 사용법 (Linux에서) Reference 를 보고 직접 따라해본 것을 정리한 내용입니다. Docker 다운받기 curl -s https://get.docker.com/ | sudo sh Docker 사용 권한 주기 docker 는 기본적으로 root 권한이 필요로 되어

nicewoong.github.io

컨테이너 기반의 오픈소스 가상화 플랫폼
  • 컨테이너 ? 앱이 구동되는 환경까지 감싸서 실행할 수 있도록 하는 격리 기술
  • 컨테이너 런타임 ? 컨테이너를 다루는 도구 → 가장 유명한 것 → 도커

Docker

  • 다양한 프로그램들과 실행 환경을 컨테이너로 규격화시켜 프로그램의 배포 및 관리를 단순화할 수 있음(개발 후 사용자가 실행할 때 필요한 환경들은 한 번에 패키징하여 별 다른 설치 없이 한 번에 실행시켜주도록 하는 것)
  • 프로그램의 코드 뿐만 아니라 실행에 필요한 모든 dependency들도 컨테이너에 담기 때문에 다른 환경에서도 빠르게 애플리케이션을 실행할 수 있음

⇒ 개발/실행 환경이 달라도 컨테이너로 규격화한 프로그램들이 정상적으로 작동할 수 있는 이유가 무엇일까?

: 도커 컨테이너들(도커 이미지들)이 도커 엔진 위에서 실행되기 때문

Virtual Machine VS Container

  • Virtual Machine
    • 하드웨어를 에뮬레이트하여, 여러 운영체제를 동시에 실행할 수 있게 해줌
    • 각 VM은 전체 OS를 포함하므로 무겁고 느릴 수 있음
  • Container
    • OS 수준에서의 가상화로, 필요한 라이브러리와 바이너리만 포함하므로 가벼움
    • VM보다 더 빠르게 실행되지만, 보안과 격리가 약함

Docker Image(도커 이미지)

  • 도커에서 서비스 운영에 필요한 서버 프로그램, 코드 및 라이브러리, 컴파일된 실행 파일 등을 묶는 형태
  • 즉, 컨테이너 생성(실행)에 필요한 모든 파일과 환경을 가진 것으로, 더 이상 Dependency 파일을 컴파일하거나 이것저것 설치할 필요가 없는 상태의 파일을 뜻함
  • 컨테이너의 상태가 바뀌거나 삭제되더라도 도커 이미지는 변하지 않음
  • 도커 이미지를 실행(run)하면 ⇒ 도커 컨테이너
  • 도커 이미지는 도커 파일이라는 파일로 만들어지는데, 이러한 도커 파일에는 소스코드와 함께 의존성 패키지 등 사용한 설정 파일을 관리하기 쉽도록 명시됨

Docker Layer(도커 레이어)

  • 여러 개의 레이어를 나누어 이미지를 구성
  • ex) apache 이미지를 만든다고 하면, 기존의 Ubuntu 이미지를 base Image로 이용하고, 그 위에 필요한 다른 레이어들을 얹어서 만들 수 있음
  • 레이어 방식을 사용하면 기존의 이미지 레이어를 이용해 다양한 이미지를 새로 만들 수 있음
  • 기존 이미지를 이용하기 때문에 용량을 절약할 수 있음
  • 컨테이너를 생성할 때도 레이어 방식을 이용해 기존의 이미지 레이어 위에 읽기/쓰기 레이어를 추가함
  • 이미지 레이어를 그대로 사용하면서 컨테이너가 실행 중에 생성하는 파일이나 변경된 내용은 읽기/쓰기 레이어에 저장되므로 여러 개의 컨테이너를 생성하더라도 최소한의 용량만 사용하게 됨

Docker Hub(도커 허브)

  • 도커는 도커 허브를 통해 수많은 공개 이미지를 무료로 관리해줌
  • 누구나 쉽게 도커 이미지를 만들고 배포 가능
  • 호스트들은 도커 허브에서 도커 이미지를 pull 해와서 실행시킬 수 있음
  • 용량이 매우 큰 이미지들도 도커 허브에서 관리해주기 때문에 사용자는 부담 없이 도커 이미지를 사용할 수 있음
저작자표시 비영리 변경금지 (새창열림)

'기타' 카테고리의 다른 글

[박람회] K-GEO festa  (0) 2024.11.12
[쿠버네티스] 쿠버네티스란?  (0) 2024.06.13
[Jenkins] 젠킨스란?  (0) 2023.08.16
[CI/CD] CI/CD란?  (0) 2023.08.16
[MSA] MSA란?  (0) 2023.08.16
  1. Docker
  2. Virtual Machine VS Container
  3. Docker Image(도커 이미지)
  4. Docker Layer(도커 레이어)
  5. Docker Hub(도커 허브)
'기타' 카테고리의 다른 글
  • [박람회] K-GEO festa
  • [쿠버네티스] 쿠버네티스란?
  • [Jenkins] 젠킨스란?
  • [CI/CD] CI/CD란?
woojin._.
woojin._.
여러가지 개발을 해보며 발생하는 이야기들에 대한 블로그입니다:)
  • woojin._.
    Jin's Dev Story
    woojin._.
  • 전체
    오늘
    어제
    • 분류 전체보기 (794)
      • Tools (25)
        • eGovFrame (3)
        • GeoServer (3)
        • QGIS (2)
        • LabelImg (2)
        • Git (6)
        • GitHub (1)
        • Eclipse (7)
        • Visual Studio (1)
      • Web & Android (121)
        • SpringBoot (37)
        • Three.js (2)
        • Spring Data JPA (9)
        • 스프링 부트 쇼핑몰 프로젝트 with JPA (25)
        • Thymeleaf (4)
        • Spring Security (15)
        • Flutter (29)
      • Programming Language (61)
        • JAVA (27)
        • JavaScript (14)
        • Dart (2)
        • Python (15)
        • PHP (3)
      • Database (43)
        • PostgreSQL (32)
        • MYSQL (7)
        • Oracle (3)
        • MSSQL (1)
      • SERVER (17)
        • TCP_IP (3)
        • 리눅스 (7)
        • AWS (7)
      • Coding Test (410)
        • 백준[JAVA] (76)
        • 프로그래머스[JAVA] (257)
        • 알고리즘 고득점 Kit[JAVA] (3)
        • SQL 고득점 Kit[ORACLE] (74)
      • CS 지식 (49)
        • [자료구조] (14)
        • [네트워크] (12)
        • [데이터베이스] (10)
        • [알고리즘] (9)
        • [운영체제] (4)
      • 기타 (6)
      • 자격증 & 공부 (62)
        • 정보처리기사 (2)
        • SQLD (6)
        • 네트워크관리사 2급 (5)
        • 리눅스마스터 1급 (44)
        • 리눅스마스터 2급 (1)
        • ISTQB (3)
        • 시스템보안 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 태그

    Java
    스프링부트
    리눅스마스터
    backjoon
    프로그래머스
    Linux
    CS
    pcce 기출문제
    programmers
    CS지식
    Flutter
    리눅스마스터 1급
    springboot
    spring
    Spring Security
    플러터
    백준
    시큐리티
    postgresql
    JPA
    python
    DB
    리눅스
    스프링
    baekjoon
    자바
    스프링 부트 쇼핑몰 프로젝트 with JPA
    데이터베이스
    Oracle
    데이터
  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
woojin._.
[Docker] Docker란?

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.