1. 프로비저닝(Provisioning)이란?
프로비저닝(Provisioning)은 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것을 말한다. 프로비저닝은 하드웨어, 소프트웨어, 네트워크 리소스 등 다양한 IT 자원을 포함할 수 있으며, 자동화 도구를 사용하여 효율적으로 수행될 수 있다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F404a9fb6-ab9b-45cc-8074-ee63a3334890%252Fac20140e-fda4-4718-8ab2-d1eb85556698%252FUntitled.png%3Ftable%3Dblock%26id%3D79f4f4c7-b064-4858-ab6a-38537b1c7d5c%26cache%3Dv2&w=3840&q=75)
docker commit 명령어를 통해 현재 실행 중인 컨테이너를 이미지로 변환한다.
현재 컨테이너의 상태를 그대로 이미지로 만들 수 있는 장점이 있지만 명령어의 기록이 남아있지 않아 동일한 이미지를 만들기 어렵고, 협업이 어려운 단점이 있다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F404a9fb6-ab9b-45cc-8074-ee63a3334890%252F7bb33d29-e60f-4076-847d-a40fd749d291%252FUntitled.png%3Ftable%3Dblock%26id%3D02b13d88-03f1-48f3-bb75-ad1425e554d1%26cache%3Dv2&w=3840&q=75)
반면 명령어와 지시사항을 포함하는 텍스트 파일로 이미지를 생성할 수 있다. 이는 동일한 이미지를 만들 수 있고 , 자동화된 빌드 프로세스를 통해 빠르고 효율적으로 이미지를 생성할 수 있다. 이때 만드는 스트립트 파일을 Dockerfile 이라고 한다.
2. 새로운 컨테이너 만들기
docker run -dit -p 8080:80 httpd:2.4
httpd:2.4 이미지를 다운 후 실행한다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F404a9fb6-ab9b-45cc-8074-ee63a3334890%252Fea6b9e9b-1591-4ae1-bae5-1934a04a9611%252FUntitled.png%3Ftable%3Dblock%26id%3D63ff5403-0bb4-4a61-aa46-a1ead463d73d%26cache%3Dv2&w=3840&q=75)
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F404a9fb6-ab9b-45cc-8074-ee63a3334890%252Ff4a81fd0-15c9-4b83-ab06-31c67edd3d00%252FUntitled.png%3Ftable%3Dblock%26id%3D27f5ade3-a283-4e4e-9aea-37687a1b9de2%26cache%3Dv2&w=3840&q=75)
8080 포트를 통해 접속하면 포트포워드로 80 포트가 실행되며 httpd:2.4의 index.html 파일이 실행된다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F404a9fb6-ab9b-45cc-8074-ee63a3334890%252Ff2967ebf-4a35-4dfd-ab81-f44fdcb82e9b%252FUntitled.png%3Ftable%3Dblock%26id%3Df94968fb-3fc4-4909-b75e-1a7fb5179ba4%26cache%3Dv2&w=3840&q=75)
터미널에 접속한다.
find / -name index.html // index.html 파일의 위치를 찾는다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F404a9fb6-ab9b-45cc-8074-ee63a3334890%252F298f891e-3b35-438a-9cdb-23400d0f784e%252FUntitled.png%3Ftable%3Dblock%26id%3D0a56c884-c43a-46b2-8360-d4a1e7df9d8d%26cache%3Dv2&w=3840&q=75)
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F404a9fb6-ab9b-45cc-8074-ee63a3334890%252Fa7d36ba4-1286-4802-b7fb-4f1b5dec18df%252FUntitled.png%3Ftable%3Dblock%26id%3D9bfd9086-71d5-4871-8ac2-8474967e0524%26cache%3Dv2&w=3840&q=75)
index.html 파일의 경로를 찾는다.
3. Dockerfile
Dockerfile은 Docker 이미지를 생성하는 데 사용되는 스크립트 파일이다. 이 파일에는 Docker 이미지가 어떻게 구성될지에 대한 명령어와 지시사항이 포함되어 있다. Dockerfile을 사용하면 애플리케이션과 필요한 모든 종속성, 설정 등을 포함한 환경을 정의할 수 있으며, 이를 통해 일관된 환경을 쉽게 배포할 수 있다.
3.1 Dockerfile 설정
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F404a9fb6-ab9b-45cc-8074-ee63a3334890%252F5f4f1ef3-a5f0-4c1b-91ee-cc0c60c2b821%252FUntitled.png%3Ftable%3Dblock%26id%3D3ef522ca-2cd3-4104-9d30-c54288933b9d%26cache%3Dv2&w=3840&q=75)
패키지를 이렇게 만든다.
ex01/www/index.html
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F404a9fb6-ab9b-45cc-8074-ee63a3334890%252Fccae7cba-4c9e-42ab-a702-48a81bd0ecd4%252FUntitled.png%3Ftable%3Dblock%26id%3Df4498218-a095-42e7-92c7-7014fcfa154b%26cache%3Dv2&w=3840&q=75)
ex01/Dockerfile
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F404a9fb6-ab9b-45cc-8074-ee63a3334890%252Faa05e7f1-e04b-4263-b084-e84586d978be%252FUntitled.png%3Ftable%3Dblock%26id%3D27ca2f76-1dc4-459d-ab78-b13f03395068%26cache%3Dv2&w=3840&q=75)
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](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F404a9fb6-ab9b-45cc-8074-ee63a3334890%252Faa706ad8-2e35-47de-9e10-86f0de4db9c3%252FUntitled.png%3Ftable%3Dblock%26id%3D807612a2-6e8d-4838-9da5-5b86c6b79a4a%26cache%3Dv2&w=3840&q=75)
새로운 터미널을 연다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F404a9fb6-ab9b-45cc-8074-ee63a3334890%252F0fd86f78-6cd7-44fd-8bfd-305cf0d1c694%252FUntitled.png%3Ftable%3Dblock%26id%3D28ab9c14-253d-4bf1-b82e-7014c3b66d43%26cache%3Dv2&w=3840&q=75)
ex01 폴더로 이동한다.
docker build -t provisioningtest . // provisioningtest 이름으로 이미지를 만든다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F404a9fb6-ab9b-45cc-8074-ee63a3334890%252F882f846e-4e0e-47ea-a04a-22395b9a7f97%252FUntitled.png%3Ftable%3Dblock%26id%3Da8a3b12b-c411-41d4-b364-beff0641bf0e%26cache%3Dv2&w=3840&q=75)
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F404a9fb6-ab9b-45cc-8074-ee63a3334890%252Fe2e54960-1acb-4dcf-b12d-5a30c5689ad3%252FUntitled.png%3Ftable%3Dblock%26id%3Dfc427446-600f-43cb-9313-84aab94b36f4%26cache%3Dv2&w=3840&q=75)
provisioningtest 이름으로 이미지를 만든다.
docker run -d -p 9000:80 privisiningtest
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F404a9fb6-ab9b-45cc-8074-ee63a3334890%252Fd42fdb8e-7a23-4912-8821-114cbfe129ec%252FUntitled.png%3Ftable%3Dblock%26id%3D9770aa63-e5b2-4165-ac8d-75a9ffe283b6%26cache%3Dv2&w=3840&q=75)
이미지를 실행한다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F404a9fb6-ab9b-45cc-8074-ee63a3334890%252F06970bea-cab0-408e-8b4c-d1a30dae3b04%252FUntitled.png%3Ftable%3Dblock%26id%3Da4a75788-87fb-4279-9c36-f67ebbe5eafa%26cache%3Dv2&w=3840&q=75)
9000 포트를 실행하면 포트포워딩으로 80 포트가 실행된다. 기존 it works 에서 hello world 로 index.html 이 변경되었다.
Share article