(이전에 구성한 VM에서 계속합니다.
외부 호출을 위해 두 Linux 이더넷 어댑터를 모두 엽니다.
터미널 확인 -> ifconfig -a 결과)
소프트웨어별 Docker 이미지는 Docker Hub에서 얻을 수 있습니다.
이 기사에서는 Nginx 컨테이너를 통해 간단한 WEB 구성을 수행합니다.
1. 손쉬운 빌드: Nginx Docker 이미지를 가져와서 시작하세요.
– 다음 명령을 실행하여 nginx 도커 이미지를 가져옵니다.
docker pull nginx
– 명령어 실행 시 아래와 같이 다운로드가 진행됩니다.
(root@localhost sorc)# docker pull nginx
Using default tag: latest
Trying to pull repository docker.io/library/nginx ...
latest: Pulling from docker.io/library/nginx
3f9582a2cbe7: Pull complete
9a8c6f286718: Pull complete
e81b85700bc2: Pull complete
73ae4d451120: Pull complete
6058e3569a68: Pull complete
3a1b8f201356: Pull complete
Digest: sha256:aa0afebbb3cfa473099a62c4b32e9b3fb73ed23f2a75a65ce1d4b4f55a5c2ef2
Status: Downloaded newer image for docker.io/nginx:latest
– 참고 링크는 다음과 같습니다.
https://hub.docker.com/_/nginx
nginx – 공식 이미지 | 도커 허브
빠른 시작 안내서 지원되는 태그 및 해당 Dockerfile 링크 1.23.3, mainline, 1, 1.23, 최신 1.23.3-perl, mainline-perl, 1-perl, 1.23-perl, perl 1.23.3-alpine, mainline-alpine, 1 – 알파인, 1.23-알핀, 알파인 1.23.3-알핀-펄, 메인 라인-알핀-펄, 1-a
hub.docker.com
다음 명령어로 별도의 이미지를 생성하지 않고 바로 시작할 수 있습니다.
1) 포트 8088에 액세스할 때 포트 80에 잠금
2) -d 옵션으로 백그라운드에서 시작 (그렇지 않으면 꼬리 형태로 잡혀서 Ctrl + C 누르는 순간 멈춤)
docker run -d -p 8088:80 docker.io/nginx
테스트는 다음과 같이 가능합니다.
curl http://localhost:8088
2. 설정을 추가하여 빌드: 테스트용 nginx 빌드 및 실행
– 수신된 이미지 파일을 기반으로 추가 설정으로 이미지를 생성합니다.
– 먼저 Dockerfile을 생성할 디렉토리를 생성합니다.
sudo mkdir -p /sorc/nginx/
chown -R master:master /sorc/nginx
– 적절한 디렉토리로 변경하고 vi를 통해 Dockerfile을 빌드합니다.
이번에는 Nginx를 프록시용으로 구성해야 할 뿐만 아니라 이를 사용하여 테스트 페이지를 호출하는 것도 포함됩니다.
따라서 URL 호출을 테스트하기 위해 HTML 파일을 추가하십시오.
이름은 index.html로 생성됩니다.
cd /sorc/nginx/
vi index.html
--아래 내용 붙여 넣기 후 :wq!
<!
DOCTYPE html>
<html>
<head>
<title>Testing Page</title>
</head>
<body>
<h1 style="font-size: 32px;">Testing Page</h1>
<p>
Welcome to the testing page. Below are two buttons that will perform various tests on the system. Please click on one of the buttons to continue.
</p>
<form>
<button type="button" onclick="confirmHttpTest()">Massive HTTP requests</button>
<button type="button" onclick="confirmMemoryTest()">Out Of Memory Test</button>
</form>
<script>
function confirmHttpTest() {
var result = confirm("Are you sure you want to perform a Massive HTTP request test?");
if (result) {
sendHttpRequests();
} else {
alert("HTTP request test cancelled.");
}
}
function confirmMemoryTest() {
var result = confirm("Are you sure you want to perform an Out Of Memory test?");
if (result) {
alert("Out Of Memory test initiated.");
} else {
alert("Out Of Memory test cancelled.");
}
}
function sendHttpRequests() {
var url = "http://example.com/api"; // Replace with your URL
var numRequests = 10; // Replace with the number of requests you want to send
var completedRequests = 0;
for (var i = 0; i < numRequests; i++) {
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
completedRequests++;
if (completedRequests == numRequests) {
alert("HTTP request test completed.");
}
}
};
xhr.send();
}
}
</script>
</body>
</html>
이제 Dockerfile을 만듭니다.
Dockerfile에는 다음이 포함됩니다.
– 최신 Nginx 이미지 기반
– 작업 디렉토리: /usr/share/nginx/html(소스 문서의 루트)
– 로컬 index.html 파일을 doc 루트 디렉터리에 복사합니다.
– 8080 포트 외부 개방
– 컨테이너가 시작되면 nginx가 시작됩니다.
# Use an official Nginx runtime as a parent image
FROM nginx:latest
# Set the working directory to the Nginx document root
WORKDIR /usr/share/nginx/html
# Copy the local HTML file to the container
COPY index.html .
# Expose port 8080 to the outside world
EXPOSE 8080
# Start Nginx when the container starts
CMD ("nginx", "-g", "daemon off;")
Dockerfile을 빌드한 후 이미지를 빌드합니다.
– 다음 명령어를 실행하면 빌드가 완료됩니다.
-t 옵션은 태깅을 설정하며, 설정하지 않으면 “최신”으로 설정됩니다.
– Dockerfile의 위치를 찾아 실행합니다.
cd /sorc/nginx/
sudo docker build -t nginx:nginx-testing .
생성된 이미지는 이제 도커 이미지에서 사용할 수 있습니다.
1단계에서 시작한 것과 같은 방식으로 시작할 수 있습니다.
이번에는 –name 옵션을 사용하여 이름을 testing-web으로 지정합니다.
docker run -d -p 8080:80 --name testing-web nginx:nginx-testing
테스트는 다음과 같이 가능합니다.
curl http://localhost:8080
결과는 위에서 설정한 HTML 페이지입니다.
여기까지 nginx 실행 테스트가 완료되었습니다.
참조. 시작된 도커 컨테이너는 도커 중지입니다.
또는 도커 중지
참고 2. 일시 중지된 컨테이너가 남아 있는 한 동일한 이미지로 컨테이너를 다시 빌드할 수 없으므로 실행이 일시 중지된 후 docker container prune과 같은 명령을 실행하여 남아 있는 중지 기록을 지우십시오.
(*삭제시 다른 중지된 컨테이너가 없는지 확인)