웹해킹 스터디 2: 도커

crimsonhat
|2023. 11. 26. 12:32

기본적인 Docker에 대한 개념을 공부하고 Dockerfile 문법을 공부

    - 도커 파일, 도커 컴포즈(Compose) 개념, 도커 명령어, 도커 개념
    - 도커 명령어와, 도커 파일에 대해 작성하면 됩니다. ( *필수* 도커 컨테이너 생성, 삭제, 도커 컨테이너 이미지 생성, 

삭제 그 외에도 꼼꼼히 작성

 

4 주차 과제 : Dockerfile을 이용하여 Flask + MYSQL으로 만든 서버를 구축, 도커 파일과 Flask MySql으로 만든 소스코드들을 전부 GITHUB에 업로드 하여 깃허브 링크를 포함하여 과제 제출 바랍니다.
+ docker build 명령어와 docker run 등의 명령어를 이용하여 바로 서버가 작동 될 수 있도록 만들어야 합니다. ( 한 마디로, 도커라이징 하면 됩니다. )
+ 본인이 도커 명령어를 이용하여 서버를 작동 시킨 명령어를 모두 README.md 파일에 업로드 하시기 바랍니다.
* 해당 과제는 도커 빌드하는 법, 도커 이미지 빌드하는 법, 플라스크 서버 도커 이미지 빌드하는 법 등 이런식으로 구글링 하면서 하시면 됩니다.

 

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

 

Overview of the get started guide

Get started with the Docker basics in this comprehensive overview, You'll learn about containers, images, and how to containerize your first application.

docs.docker.com

 

https://arca.live/b/programmer/92228933

 

docker 에 대한 간단한 개념 이해 - 코딩 채널

* 대략적인 개념을 잡는 거니 틀린 표현도 있을 수 있음 어렵게 생각하지 말고 편하게 생각해 Docker가 뭔데 하면 어디서 얼핏 들어봤을거임이렇게 생긴거 한번쯤은 봤지? 안봤으면 지금본게 사람

arca.live

 

https://tech.cloudmt.co.kr/2022/06/29/%EB%8F%84%EC%BB%A4%EC%99%80-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88%EC%9D%98-%EC%9D%B4%ED%95%B4-1-3-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EC%82%AC%EC%9A%A9%EB%B2%95/

 

도커와 컨테이너의 이해 (1/3) - 컨테이너 사용법

목차 1. 도커 이미지? 도커 컨테이너? a. 도커 이미지 b. 도커 컨테이너 2. 기본적인 도커 명령어 a. 도커 컨테이너 안녕하세요. 첫 번째 글을 작성하게 된 클라우드메이트 T

tech.cloudmt.co.kr

 

https://youtu.be/qSysZEBEqRM?si=CTRcGPeB5kwvAo7R

 

 

 

https://learn.microsoft.com/ko-kr/training/paths/administer-containers-in-azure/

 

Azure 학습 경로에서 컨테이너 관리 - Training

이 학습 경로에서는 Azure Container Instances를 생성 및 관리하고, Kubernetes에 대한 탄력적 확장을 제공하는 데 활용하는 방법을 알아봅니다.

learn.microsoft.com

 

https://hudi.blog/about-docker/

 

이론과 실습을 통해 이해하는 Docker 기초

본 포스팅은 도커에 대한 자세한 개념, 도커 기본 명령어, 컨테이너 실행 실습, 도커 컴포즈, 도커 이미지 빌드, 도커 허브에 이미지 배포 등 전반적인 도커 기초에 대한 내용을 다룬다. 1. 도커 (D

hudi.blog

 

https://blog.naver.com/seed102/223273985773

 

vscode python 가상환경 설정

1. 파이썬 설치 기본적으로 파이썬이 깔려있는지를 확인해야한다. powershell을 열고 다음의 명령어를 입력...

blog.naver.com

 


 

컨테이너

  • 앱이 구동되는 환경까지 감싸서 실행할 수 있도록 하는 격리 기술
  • 애플리케이션의 표준화된 이식 가능한 패키징
  • 소프트웨어 패키지를 빌드하고 실행할 수 있는 격리된 환경
    • 이 소프트웨어 패키지에는 모든 컴퓨팅 환경에서 빠르고 안정적으로 애플리케이션을 실행하기 위한 코드 및 모든 종속성이 포함됨
    • 이 패키지를 컨테이너 이미지라고 함
      • 컨테이너 이미지는 애플리케이션을 배포하는 데 사용하는 단위가 됨

소프트웨어 컨테이너화

  • VM(가상 머신)을 사용하지 않고 컨테이너를 배포 및 실행하는 데 사용되는 OS 가상화 방법
  • 컨테이너는 물리적 하드웨어, 클라우드, VM 및 여러 운영 체제에서 실행될 수 있다

컨테이너 런타임

  • 컨테이너를 다루는 도구

도커 (Docker)

  • 컨테이너를 개발, 제공 및 실행하는 데 사용되는 컨테이너화 플랫폼
  • 하이퍼바이저를 사용하지 않으며, 애플리케이션을 개발하고 테스트하는 경우 데스크톱 또는 노트북에서 Docker를 실행할 수 있다
    • Docker의 데스크톱 버전은 Linux, Windows 및 macOS를 지원
  • 컨테이너를 다루는 도구(컨테이너 런타임) 중 가장 유명한 것
  • 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼
  • Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징
    • 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있음
  • Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있으며 코드가 문제없이 실행될 것이다

Docker 아키텍쳐

  • Docker 플랫폼은 컨테이너화된 애플리케이션을 빌드, 실행 및 관리하는 데 사용하는 여러 구성 요소로 구성됨

https://learn.microsoft.com/ko-kr/training/modules/intro-to-docker-containers/2-what-is-docker

 

Docker란 무엇인가요? - Training

이 단원에서는 Docker의 정의와 해당 아키텍처에 관해 설명합니다.

learn.microsoft.com

  • Docker 엔진
  • Docker 클라이언트
  • Docker 서버
  • Docker 개체
  • Docker Hub

 


 

https://colevelup.tistory.com/30

 

[Docker] 그래서 도커(Docker)랑 컨테이너(Container)가 뭐냐구요

도커(Docker), 컨테이너(Container)는 무엇일까요? 도커(Docker) 등장 배경과 컨테이너(Container) 환경의 발달 과정 그리고 기존 가상화 방식과 컨테이너(Container) 기반 가상화 방식의 차이점과 운영방식등

colevelup.tistory.com

도커 이미지 (Docker Image)

  • 컨테이너를 만드는 데 사용되는 읽기 전용(read-only) 템플릿
  • 컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있는 도커파일을 만든 후 Dockerfile을 빌드 하여 이미지를 만든다

 

  • 소프트웨어를 포함하는 이식 가능 패키지
  • 실행 시 컨테이너가 됨
    • 컨테이너는 이미지의 메모리 내 인스턴스
  • 변경할 수 없음
    • 이미지를 빌드한 후에는 변경할 수 없음
  • 이미지를 변경하는 유일한 방법은 새 이미지를 만드는 것
    • 이 기능을 사용하면 프로덕션에서 사용하는 이미지가 개발 및 QA에서 사용되는 이미지와 동일하게 됨

 

 

도커 파일

  • Docker 이미지를 빌드하고 실행하는 데 사용하는 지침을 포함하는 텍스트 파일
    • 여기서 쓰이는 이미지의 정의:
      • 새 이미지를 만드는 데 사용하는 기본 또는 부모 이미지
      • 기본 OS를 업데이트하고 추가 소프트웨어를 설치하는 명령
      • 개발된 애플리케이션과 같이 포함할 빌드 아티팩트
      • 스토리지 및 네트워크 구성과 같은 노출할 서비스
      • 컨테이너가 시작될 때 실행할 명령

 


 

도커 컨테이너

  • What is Docker Container?
    • 도커 이미지를 실행한 상태
  • 기능
    • 이미지로 컨테이너를 생성하면 이미지의 목적에 맞는 파일이 들어있는 파일 시스템과 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간이 생성된다 => 이것을 도커 컨테이너라고 한다
    • 도커 컨테이너는 읽기 전용안 이미지에 변경된 사항을 저장하는 컨테이너 계층(Layer)에 저장한다

  • 예시
    • 도커 이미지 = 도넛 레시피
    • 도넛 컨테이너 = 해당 레시피를 이용해 만든 도넛
    • 하나의 도넛 레시피로 여러 가지 맛의 도넛을 만들 수 있는 것과 같이, 하나의 도커 이미지로 여러 개의 도커 컨테이너를 만들 수 있다
    • 기존의 도넛 레시피를 수정헤도 기존의 레시피로 만들어진 도넛에는 영향이 없듯이, 도커 이미지를 변경해도 이미 실행 중인 도커 컨테이너에는 영향을 주지 않는다

 

 

 

 

 

 


 

https://tech.cloudmt.co.kr/2022/06/29/%EB%8F%84%EC%BB%A4%EC%99%80-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88%EC%9D%98-%EC%9D%B4%ED%95%B4-1-3-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EC%82%AC%EC%9A%A9%EB%B2%95/

 

도커와 컨테이너의 이해 (1/3) - 컨테이너 사용법

목차 1. 도커 이미지? 도커 컨테이너? a. 도커 이미지 b. 도커 컨테이너 2. 기본적인 도커 명령어 a. 도커 컨테이너 안녕하세요. 첫 번째 글을 작성하게 된 클라우드메이트 T

tech.cloudmt.co.kr

Dockerfile 문법

도커 컨테이너 생성, 삭제, 도커 컨테이너 이미지 생성, 

삭제 

 

# 기본적인 도커 명령어의 구조
# docker [대상] [액션]

# 대상:
container, image, volume, network 

# 액션:
ls, inspect, start, run

 

 

 

 

 

도커 빌드하는 법, 도커 이미지 빌드하는 법, 플라스크 서버 도커 이미지 빌드하는 법

 

 

# 스택 가능 통합 파일 시스템
# 콘텐츠가 병합되는 것처럼 보이도록 분기라는 여러 디렉터리를 쌓을 수 있는 파일 시스템
# 그러나 콘텐츠는 실제로 별도로 유지

Unionfs

# Docker 이미지를 만드는 데 사용
# Unionfs를 사용하면 파일 시스템을 빌드할 때 분기를 추가하고 제거할 수 있음

============================================================================

# 이미지를 빌드하는 방법 - docker build

docker build -t temp-ubuntu .

# 이미지를 빌드할 때 -t 명령 플래그를 사용하여 이미지의 이름을 지정하고 선택적으로 태그를 지정

=============================================================================

# 이미지를 나열하는 방법 - docker images

docker images

# 이미지의 ‘이름’, ‘태그’, ‘이미지 ID’가 어떻게 나열되는지 확인
# 이미지 ID는 이미지의 이름 또는 태그가 모호한 경우 이미지를 식별하고 관리하는 유용한 방법

===========================================================================

# 이미지를 제거하는 방법 -docker rmi
# docker rmi 명령을 사용하여 로컬 Docker 레지스트리에서 이미지를 제거할 수 있다

# 제거할 이미지의 이름 또는 ID를 지정
docker rmi temp-ubuntu:version-1.0

# 컨테이너가 여전히 이미지를 사용하는 경우 이미지를 제거할 수 없음
# 컨테이너 이미지 레이어가 사용 가능한 총 공간에 추가되므로 컨테이너 호스트 디스크의 공간을 절약해야 하는 경우에 유용