[Docker] 프로비저닝(Provisioning)

류재성's avatar
Jul 19, 2024
[Docker] 프로비저닝(Provisioning)
 

1. 프로비저닝(Provisioning)이란?

💡
프로비저닝(Provisioning)은 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것을 말한다. 프로비저닝은 하드웨어, 소프트웨어, 네트워크 리소스 등 다양한 IT 자원을 포함할 수 있으며, 자동화 도구를 사용하여 효율적으로 수행될 수 있다.
 
notion image
 
docker commit 명령어를 통해 현재 실행 중인 컨테이너를 이미지로 변환한다.
현재 컨테이너의 상태를 그대로 이미지로 만들 수 있는 장점이 있지만 명령어의 기록이 남아있지 않아 동일한 이미지를 만들기 어렵고, 협업이 어려운 단점이 있다.
 
notion image
 
 
반면 명령어와 지시사항을 포함하는 텍스트 파일로 이미지를 생성할 수 있다. 이는 동일한 이미지를 만들 수 있고 , 자동화된 빌드 프로세스를 통해 빠르고 효율적으로 이미지를 생성할 수 있다. 이때 만드는 스트립트 파일을 Dockerfile 이라고 한다.
 

2. 새로운 컨테이너 만들기

 
docker run -dit -p 8080:80 httpd:2.4
 
httpd:2.4 이미지를 다운 후 실행한다.
 
notion image
 
notion image
 
 
8080 포트를 통해 접속하면 포트포워드로 80 포트가 실행되며 httpd:2.4의 index.html 파일이 실행된다.
 
 
notion image
 
터미널에 접속한다.
 
find / -name index.html // index.html 파일의 위치를 찾는다.
notion image
notion image
 
index.html 파일의 경로를 찾는다.
 
 
 
 

3. Dockerfile

💡
Dockerfile은 Docker 이미지를 생성하는 데 사용되는 스크립트 파일이다. 이 파일에는 Docker 이미지가 어떻게 구성될지에 대한 명령어와 지시사항이 포함되어 있다. Dockerfile을 사용하면 애플리케이션과 필요한 모든 종속성, 설정 등을 포함한 환경을 정의할 수 있으며, 이를 통해 일관된 환경을 쉽게 배포할 수 있다.
 

3.1 Dockerfile 설정

 
notion image
 
패키지를 이렇게 만든다.
 
ex01/www/index.html
notion image
 
ex01/Dockerfile
notion image
 
💡
FROM httpd:2.4 : httpd:2.4 이미지를 사용한다. COPY ./www /usr/local/apache2/htdocs : 호스트 시스템의 현재 디렉토리(.) 내에 있는 www 디렉토리의 내용을 도커 이미지 내의 /usr/local/apache2/htdocs 디렉토리로 복사한다. EXPOSE 80 : 80 포트를 노출시킨다. CMD ["httpd-foreground"] : 컨테이너가 시작될 때 실행할 기본 명령어를 지정한다. 여기서는 httpd-foreground 명령어를 실행하여 Apache HTTP Server를 포그라운드 모드로 실행한다. 요약하면 80 포트로 호출될 때 ./www 폴더에 있는 파일을 /usr/local/apache2/htdocs에 복사 후, httpd:2.4 의 CMD가 실행될 때 사용한다.
 

3.2 Dockerfile 파일 실행하기

 
notion image
 
새로운 터미널을 연다.
 
notion image
ex01 폴더로 이동한다.
 
docker build -t provisioningtest . // provisioningtest 이름으로 이미지를 만든다.
 
notion image
 
notion image
 
provisioningtest 이름으로 이미지를 만든다.
 
 
docker run -d -p 9000:80 privisiningtest
 
notion image
 
이미지를 실행한다.
 
notion image
9000 포트를 실행하면 포트포워딩으로 80 포트가 실행된다. 기존 it works 에서 hello world 로 index.html 이 변경되었다.
Share article

{CODE-RYU};