Docker에 nginx 플러그인 파일을 설치하는 방법은 무엇입니까?
플러그인 파일의 목적:
-
파일은 docker 이미지 파일에 의해 제한되지 않습니다. 수정이 가능하며, 컨테이너를 다시 시작하고 업데이트된 파일을 사용할 수 있습니다.
로그 등 컨테이너 실행 중에 기록된 파일 이러한 정보는 외부 저장소에 자동으로 저장될 수 있으며 컨테이너 재시작으로 인해 손실되지 않습니다.
컨테이너를 실행하는 방법에는 두 가지가 있습니다.
-
docker run command
docker-compose command
docker run 명령 방법은 -v 매개변수를 사용하여 외부 호스트 디렉터리를 컨테이너 내의 경로에 마운트합니다. 마운트 지점이 여러 개인 경우 이를 통해 지정합니다. -v 매개변수이며 절대 경로만 사용할 수 있습니다. docker-compose 명령은 서비스 방법을 설명하기 쉽습니다. 서비스는 여러 컨테이너를 포함할 수 있으며 외부 경로의 마운트 구성도 다음을 통해 구성됩니다. -v 매개변수입니다. 물론 docker-compose.yml 파일의 상대 경로를 사용할 수 있다는 장점이 있습니다. 또 다른 장점은 docker-compose를 사용하여 컨테이너를 시작하는 명령이 비교적 간단하다는 것입니다.
이미지 패키징 경로 구조는 다음과 같다고 가정합니다.
├── build.sh ├── docker-compose.yml ├── Dockerfile ├── mynginx.conf ├── nginx-vol │ ├── conf.d │ │ └── mynginx.conf │ ├── html │ │ └── index.html │ └── logs │ ├── access.log │ └── error.log └── run.sh
Dockerfile은 이미지 빌드를 위한 구성 파일이고 내용은 다음과 같습니다.
FROM nginx LABEL maintainer="xxx" email="<xxx@xxx.com>" app="nginx test" version="v1.0" ENV WEBDIR="/data/web/html" RUN mkdir -p ${WEBDIR} EXPOSE 5180
nginx 기준으로 새 데이터 파일 경로를 /data/로 지정합니다. web/html이고 노출된 포트는 5180입니다.
다음 명령을 통해 새 이미지를 컴파일합니다.
docker build -t nginx:test-v1 .
컴파일된 이미지 태그는 test-v1입니다. 로컬 이미지를 볼 수 있습니다.
docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx test-v1 d2a0eaea3fac 56 minutes ago 141MB nginx latest 605c77e624dd 9 days ago 141MB
test-v1 태그가 있는 이미지가 새 이미지라는 것을 알 수 있습니다. 컴파일되었습니다.
nginx 외부 볼륨 nginx-vol 및 관련 conf.d, 로그 및 html 폴더를 만들고 해당 콘텐츠를 해당 디렉터리에 넣습니다. 예를 들어 html 폴더에 있는 iindex.html의 내용은 다음과 같습니다.
<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>系统时间</title> <body> <div id="datetime"> <script> setInterval("document.getElementById('datetime').innerHTML=new Date().toLocaleString();",1000); </script> </div> </body> </head> </html>
사실 현재 시간을 표시하는 페이지일 뿐입니다.
로그 섹션은 컨테이너가 실행 중일 때 로그를 외부 저장소에 기록하는 것이 목적입니다. 컨테이너가 중지되거나 이미지가 삭제되더라도 실행 중인 로그는 계속 유지될 수 있습니다.
conf.d 아래는 nginx 맞춤형 구성이며, 내용은 다음과 같습니다.
server { listen 5180; #listen [::]:5180; server_name localhost; #access_log /var/log/nginx/host.access.log main; location / { root /data/web/html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; # proxy the PHP scripts to Apache listening on 127.0.0.1:80 #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; # deny access to .htaccess files, if Apache's document root # concurs with nginx's one #location ~ /\.ht { # deny all; }
실제로 포트와 루트 경로는 nginx의 기본 default.conf를 기반으로 수정되었습니다. 목적은 nginx 구성 파일이 가능하다는 것을 보여주기 위한 것입니다. 또한 외부 저장소를 사용합니다. 자체 프로그램이 구성 파일을 수정할 수 있는 경우 이러한 방식으로 컨테이너가 실행되는 동안 구성 파일을 수정할 수 있습니다. 수정된 구성 파일은 실제로 외부 저장소에 저장되므로 컨테이너 실행이 중지됩니다. 이미지 내부의 파일은 복원되지 않습니다.
docker run mode
편의상 실행 명령을 run.sh와 같은 쉘 스크립트에 작성할 수 있으며 내용은 다음과 같습니다.
docker run --name nginx-v1 -p 15180:5180 -v /home/project/nginx-test/nginx-vol/logs:/var/log/nginx -v /home/project/nginx-test/nginx-vol/conf.d:/etc/nginx/conf.d -v /home/project/nginx-test/nginx-vol/html:/data/web/html -d nginx:test-v1
명령에 -v가 3개 있는 것을 볼 수 있는데, 다른 외부 저장소 마운트에 해당합니다. 컨테이너 내의 다른 디렉터리에 다운로드하고 매핑합니다.
-p(소문자에 유의) 뒤의 포트는 각각 호스트 포트와 컨테이너 포트입니다. 즉, 호스트의 15180 포트가 컨테이너의 5180 포트에 매핑되므로 nginx 서비스 포트 5180이 컨테이너에 의해 시작됩니다. 호스트의 15180 포트에 액세스하고 매핑될 수 있습니다.
실행 중인 컨테이너 보기:
docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cf2275da5130 nginx:test-v1 "/docker-entrypoint.…" 6 seconds ago Up 5 seconds 80/tcp, 0.0.0.0:15180->5180/tcp, :::15180->5180/tcp nginx-v1
자세한 매핑 보기:
docker inspect nginx-v1
는 전체 정보를 표시하며 "마운트" 섹션에서 전체 스토리지 마운트 매핑을 볼 수 있습니다.
호스트의 nginx-vol/logs 바로 아래를 보면 컨테이너에서 실행 중인 nginx 로그가 자동으로 외부 호스트의 저장소에 기록되는 것을 확인할 수 있습니다.
ls -l nginx-vol/logs/ total 12 -rw-r--r-- 1 root root 1397 1月 8 15:08 access.log -rw-r--r-- 1 root root 4255 1月 8 15:59 error.log
컨테이너 중지:
docker stop nginx-v1
컨테이너 삭제:
docker rm nginx-v1
docker-compose 모드
docker-compose 설치
apt-get install docker-compose
docker-compose.yml 파일 쓰기
version: "3" services: nginx: container_name: mynginx image: nginx:test-v1 ports: - 80:5180 volumes: - ./nginx-vol/html:/data/web/html - ./nginx-vol/logs:/var/log/nginx - ./nginx-vol/conf.d:/etc/nginx/conf.d restart: always
container_name: 컨테이너 이름 지정
image: 사용 미러 및 해당 태그
ports: 호스트 포트 및 컨테이너 포트 매핑
volumes: 외부 저장소 마운트 매핑
컨테이너 시작
docker-compose up -d Creating network "nginxtest_default" with the default driver Creating mynginx ... Creating mynginx ... done
컨테이너 보기
docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 635e2999c825 nginx:test-v1 "/docker-entrypoint.…" 24 seconds ago Up 22 seconds 80/tcp, 0.0.0.0:80->5180/tcp, :::80->5180/tcp mynginx
docker-compose에 따라 컨테이너가 실행되는 것을 확인할 수 있습니다. .yml 구성, 포트, 이름, 마운트가 모두 정상입니다. 호스트의 포트 80에 액세스하는 것은 컨테이너의 5180 서비스에 해당합니다.
컨테이너를 중지하세요
docker-compose down Stopping mynginx ... done Removing mynginx ... done Removing network nginxtest_default
보시다시피 docker-compose를 사용하는 것이 더 쉽습니다.
위 내용은 Docker에 nginx 플러그인 파일을 설치하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











도커 컨테이너를 종료하는 4 가지 명령 사용 Docker Kill & lt; Container_name & gt; 호스트 터미널의 명령 (힘 출구)

단계를 따르면 Docker 컨테이너 이름을 쿼리 할 수 있습니다. 모든 컨테이너 (Docker PS)를 나열하십시오. 컨테이너 목록을 필터링합니다 (GREP 명령 사용). 컨테이너 이름 ( "이름"열에 위치)을 가져옵니다.

Docker의 외부 호스트에 파일을 복사하는 방법 : Docker CP 명령 사용 : Docker CP 실행 [옵션] & lt; 컨테이너 경로 & gt; & lt; 호스트 경로 & gt;. 데이터 볼륨 사용 : 호스트에서 디렉토리를 만들고 -V 매개 변수를 사용하여 양방향 파일 동기화를 달성하기 위해 컨테이너를 만들 때 컨테이너에 디렉토리를 장착하십시오.

Docker 컨테이너를 다시 시작하는 방법 : 컨테이너 ID (Docker PS)를 가져옵니다. 컨테이너 중지 (Docker Stop & lt; container_id & gt;); 컨테이너를 시작하십시오 (Docker start & lt; container_id & gt;); 재시작이 성공했는지 확인하십시오 (Docker PS). 기타 방법 : Docker Compose (Docker-Compose Restart) 또는 Docker API (Docker 문서 참조).

Docker에서 MySQL을 시작하는 프로세스는 다음 단계로 구성됩니다. MySQL 이미지를 가져와 컨테이너를 작성하고 시작하고 루트 사용자 암호를 설정하고 포트 확인 연결을 매핑하고 데이터베이스를 작성하고 사용자는 데이터베이스에 모든 권한을 부여합니다.

Docker 이미지를 업데이트하는 단계는 다음과 같습니다. 최신 이미지 태그 가져 오기 새 이미지 특정 태그의 이전 이미지 삭제 (선택 사항) 컨테이너를 다시 시작하십시오 (필요한 경우)

Docker Container Startup 단계 : 컨테이너 이미지를 당기기 : "Docker Pull [Mirror Name]"을 실행하십시오. 컨테이너 생성 : "docker"[옵션] [미러 이름] [명령 및 매개 변수]를 사용하십시오. 컨테이너를 시작하십시오 : "Docker start [컨테이너 이름 또는 ID]"를 실행하십시오. 컨테이너 상태 확인 : 컨테이너가 "Docker PS"로 실행 중인지 확인하십시오.

Docker에서 컨테이너 만들기 : 1. 이미지를 당기기 : Docker Pull [Mirror Name] 2. 컨테이너 만들기 : Docker Run [옵션] [미러 이름] [명령] 3. 컨테이너 시작 : Docker Start [컨테이너 이름]
