멀티 스테이지 빌드란 무엇이고어떻게 사용하는 것일까? 멀티 스테이지 빌드 (Multi-Stage build) --멀티 스테이지 빌드는Dockerfile에서 두 개의 베이스 이미지를 활용하는 방법을 의미한다. 보통 애플리케이션을 빌드하는 과정에서 만들어지는 파일들이 용량을 많이 차지한다.하지만 해당 파일들은 실제로 애플리케이션이 실행되는 시점부터는 사용하지 않기 때문에이미지 빌드에 사용하는 이미지와 실행에 사용하는 이미지로 나누는 것이다.이렇게 멀티 스테이지 빌드를 잘 활용하면실제로 애플리케이션이 실행되는 이미지의 크기를 줄일 수 있다.애플리케이션 빌드 vs 이미지 빌드애플리케이션 빌드는소스 코드를 실행 가능한 프로그램으로 만드는 것을 의미즉, 해당 소스 코드가 실행되기 위해 필요한 라이브러리를 ..
Dockerfile에 작성하는 지시어들은어떤 것들이 있을까? Dockerfile의 파일명이 "Dockerfile"이 아니고 별도로 지정한 경우의 build 명령어 --Dockerfile의 파일명은 일반적으로 그냥 "Dockerfile"이라고 저장하여 사용한다. 다만 어떠한 상황에 의해 파일명을 다르게 저장해야 하는 경우도 생긴다. 예시로상황에 알맞게 빌드하기 위해 상황별 Dockerfile을 여러 개 저장하고 build 할 때 원하는 Dockerfile로 build를 하는 상황이다.Dockerfile을 각각 다른 내용을 작성 후 AAA, BBB, CCC라고 총 3개의 파일을 저장하고 특정 상황마다 build를 할 때 원하는 Dockerfile을 선택하여 build한다. 이렇게 Dockerfile..
빌드 콘텍스트가 무엇일까? 빌드 컨텍스트 (Build Context) --빌드 컨텍스트는이미지를 빌드할 때 사용되는 폴더를 의미한다. 이미지 빌드 방식은도커 데몬이 임시 컨테이너를 실행시키면서 레이어를 하나씩 추가하면서 커밋을 하게 된다. 그래서 도커 데몬이 해당 동작들을 수행하기 위해서는빌드에 사용되는 파일들과 Dockerfile 파일을 전달해줘야 한다. (해당 파일들이 담긴 폴더 자체를 전달)(그래야 도커 데몬이 Dockerfile에 작성된 내용(코드)들을 가지고 빌드를 진행할 수 있게 된다.) 이때 이렇게 도커 데몬에게 전달해 주는 폴더가 바로 빌드 콘텍스트이다. 즉, 이전에 build를 하던 과정을 보면 index.html 파일과 Dockerfile을 담고 있던 01.buildnginx..
이미지 빌드 방법으로이미지를 만드는 방법은 무엇일까? 이미지를 만드는 방법 -- 이미지를 만드는 방법에는 크게 2가지가 존재한다.커밋 (commit) : 실행 중인 컨테이너의 상태를 그대로 이미지를 저장한다.빌드 (build) : Dockerfile을 통해서 이미지를 저장한다.일반적으로 build 방식을 사용하지만build 방식 또한 commit 방식을 기반으로 동작하기 때문에commit 방식을 알아 두는 것이 좋다.-- IaC (Infrastructure as Code) 개념 --이미지 빌드에 대해 알아보기 전에먼저 IaC에 대해서 알아야 한다. IaC는인프라 구조에서 가장 중요한 개념으로인프라 상태를 코드로 관리하는 것을 의미한다. 장점일관성 : 모든 인프라 변경 사항이 ..
이미지 커밋 방법으로이미지를 만드는 방법은 무엇일까? 이미지를 만드는 방법 -- 이미지를 만드는 방법에는 크게 2가지가 존재한다.커밋 (commit) : 실행 중인 컨테이너의 상태를 그대로 이미지를 저장한다.빌드 (build) : Dockerfile을 통해서 이미지를 저장한다.일반적으로 build 방식을 사용하지만build 방식 또한 commit 방식을 기반으로 동작하기 때문에commit 방식을 알아 두는 것이 좋다.-- commit 방식을 통해 이미지 저장하는 과정 -- 공식 Nginx 이미지를 컨테이너로 실행(공식 Nginx 이미지에는 Nginx가 설치되어 있고 기본으로 제공하는 index.html 파일도 존재)(컨테이너로 실행하면 컨테이너 레이어가 생김)컨테이너 실행 후 i..
이미지에서 레이어란 무엇일까? 레이어 (Layer)란? --이미지는컨테이너를 실행하기 위한 읽기 전용 파일이다. 해당 이미지는 저장소를 효율적으로 사용하기 위해서레이어드 파일 시스템으로 구성되어 있다.즉, 이미지는 여러 개의 레이어로 구성되어 있다. 레이어란여러 개의 층으로 구성되어 있는 것 중에 하나의 층을 의미한다. 기존에 이미지를 다운로드할 때 여러 단계에 걸쳐서 다운이 받아졌었다.바로 이 한 줄 하나가 레이어를 의미한다. 이미 가지고 있는 이미지 중에서 같은 레이어를 사용하고 있었다면이미지를 다운받을 때 해당 레이어는 다운로드하지 않고 기존에 가지고 있는 레이어를 공유해서 같이 사용하게 된다.-- 왜 이미지는 여러 개의 레이어로 구성되어 있을까? --바로 레이어드 구조가 재사용하기..
도커 허브를 통해서이미지 다운로드 및 업로드는어떻게 할까? Docker Hub 가입하기 --https://hub.docker.com/ Docker Hub Container Image Library | App ContainerizationIncrease your reach and adoption on Docker Hub With a Docker Verified Publisher subscription, you'll increase trust, boost discoverability, get exclusive data insights, and much more.hub.docker.com 이때 Username에 작성하는 내용이 프로젝트 명이 된다.-- 도커 허브에서 이미지 검색 후 살펴보는 방..
이미지를 저장 및 공유하는 방법은 무엇일까? 이미지 레지스트리 (Registry) --이미지 레지스트리는도커 이미지를 저장하기 위한 저장소를 의미한다. 해당 이미지 레지스트리를 통해서 개인 또는 팀이 특정 이미지를 다른 사람들과 공유하거나외부에서 필요한 이미지를 다운받아 사용할 수 있게 된다. 비유를 하자면 GitHub와 비슷하다.GitHub에서 자신의 코드를 등록 및 공유를 할 수 있고 다른 사람의 코드를 다운 받을 수도 있는 것처럼이미지 레지스트리도 자신의 이미지를 등록 및 공유할 수 있고 다른 사람의 이미지를 다운로드하여 사용할 수도 있다. 많은 종류의 이미지 레지스트리 플랫폼들이 존재하고이때 가장 많이 사용되는 이미지 레지스트리가 Docker Hub이다. GitHub : 소스 코드만 ..