>운영 및 유지보수 >엔진스 >docker를 사용하여 nginx에서 제공하는 웹 서비스를 설치하는 방법

docker를 사용하여 nginx에서 제공하는 웹 서비스를 설치하는 방법

PHPz
PHPz앞으로
2023-05-24 23:38:171528검색

1. 이미지 가져오기

docker pull 명령은 애플리케이션 이미지를 가져오는 데 사용되며, docker pull nginx 명령은 nginx 이미지의 최신 버전을 가져오는 데 사용됩니다. 다음은 이미지 가져오기 프로세스의 응답 결과입니다. docker pull nginx命令用于拉取最新版本的nginx镜像。下文为拉取镜像过程的响应结果:

# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
c229119241af: Pull complete 
2215908dc0a2: Pull complete 
08c3cb2073f1: Pull complete 
18f38162c0ce: Pull complete 
10e2168f148a: Pull complete 
c4ffe9532b5f: Pull complete 
Digest: sha256:2275af0f20d71b293916f1958f8497f987b8d8fd8113df54635f2a5915002bf1
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

从上文我们可以看出nginx镜像是从docker.io这个网址拉取下来的。

使用docker images命令可以查看当前操作系统中下载了哪些镜像文件。

# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
nginx         latest    12766a6745ee   33 hours ago   142MB
hello-world   latest    feb5d9fea6a5   6 months ago   13.3kB
  • REPOSITORY镜像仓库及镜像名称,如果不显示镜像仓库,默认就是docker.io

  • TAG镜像的版本或者是里程碑标签,latest表示最新版本

  • IMAGE ID 镜像的唯一标识

  • CREATED 这个镜像被创建的时间

  • SIZE表示镜像文件的大小

二、运行镜像启动容器

通过docker run命令启动一个容器,容器名称为nginx-zimug。

# docker run -d --name nginx-zimug -p  80:80  nginx
81bb1211144bc0991a789f860458548643c60b5459466c14d0604be9a4ccbfd7
  • -d表示容器在后台运行

  • --name为容器起一个名字

  • -p端口映射,格式为宿主机端口:容器端口,上文中含义是将容器中的端口80映射到宿主机的端口80,对外提供访问服务。最后一个字段为镜像名称

当浏览器通过HTTP协议访问宿主机的80端口时,可以省略端口号。得到的访问结果如下,说明我们的nginx服务已经启动成功了。

docker를 사용하여 nginx에서 제공하는 웹 서비스를 설치하는 방법

通过docker ps可以查看正在运行中的容器,如下所示:

CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                               NAMES
81bb1211144b   nginx     "/docker-entrypoint.…"   11 minutes ago   Up 11 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   nginx-zimug

三、文件映射

首先明确的是容器中的文件内容是可以被修改的,但是一旦容器重启,所有写入到容器中的,针对数据文件、配置文件的修改都将丢失。所以为了保存容器的运行状态,执行结果,我们需要将容器内的一些重要的数据文件、日志文件、配置文件映射到宿主机上。
以nginx为例,nginx有三个重要的文件目录:

  容器中路径 宿主机中自定义映射路径
存储网站网页的目录 /usr/share/nginx/html /root/nginx/html
nginx配置文件目录 /etc/nginx/nginx.conf /root/nginx/conf/nginx.conf
日志目录 /var/log/nginx /root/nginx/logs

在宿主机中新建文件目录

mkdir -p  /root/nginx/logs  /root/nginx/html  /root/nginx/conf;

将容器中的文件copy到宿主机中
将nginx配置文件copy到宿主机中

docker cp nginx-zimug:/etc/nginx/nginx.conf /root/nginx/conf;

将一个模拟的html文件放入html目录
将下面的文件保存为index.html放入宿主机的/root/nginx/html目录,因为存在映射关系,实际上也是放入了容器的/usr/share/nginx/html目录。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>使用docker搭建nginx web服务</title>
</head>
<body>
    <h2>访问成功</h2>
    <p>厉害了!</p>
</body>
</html>

四、再次启动容器服务

-v参数表达了宿主机文件与容器中文件的映射关系,格式为-v 宿主机目录:容器文件系统目录。启动一个新的容器,容器的名字叫做nginx-prod

docker run -d -p 80:80 \
--name nginx-prod \
-v /root/nginx/html:/usr/share/nginx/html \
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /root/nginx/logs:/var/log/nginx  nginx

在启动新容器之前,将nginx-zimug旧的容器删掉。如果不删除旧的容器,新容器的端口与旧容器端口会发生冲突。使用如下命令删除容器:

docker stop nginx-zimug;
docker rm nginx-zimug;

执行上面的docker runrrreee

위에서 보면 nginx 이미지가 docker.io URL에서 가져온 것을 알 수 있습니다.

docker를 사용하여 nginx에서 제공하는 웹 서비스를 설치하는 방법docker Images 명령을 사용하여 현재 운영 체제에 다운로드된 이미지 파일을 확인하세요.

rrreee
  • REPOSITORY 이미지 웨어하우스 및 이미지 이름. 이미지 웨어하우스가 표시되지 않는 경우 기본값은 docker.io

  • 입니다. >
  • TAG 이미지의 버전 또는 마일스톤 태그, 최신은 최신 버전을 의미합니다docker를 사용하여 nginx에서 제공하는 웹 서비스를 설치하는 방법

  • IMAGE ID 이미지의 고유 식별자🎜
  • 🎜CREATED 이 이미지는 생성되었습니다🎜
  • 🎜SIZE는 이미지 파일의 크기를 나타냅니다🎜
🎜2. 이미지를 실행하여 컨테이너를 시작합니다🎜🎜를 통해 컨테이너를 시작합니다. docker run 명령이고 컨테이너 이름은 nginx-zimug 입니다. 🎜rrreee
  • 🎜-d는 컨테이너가 백그라운드에서 실행 중임을 의미합니다🎜
  • 🎜--name 컨테이너에 이름을 지정하세요🎜
  • 🎜-p포트 매핑, 형식은 호스트 포트:컨테이너 포트, 위의 의미는 다음과 같습니다. 컨테이너를 포트 80에 넣는 것은 호스트의 포트 80에 매핑되어 외부 액세스 서비스를 제공합니다. 마지막 필드는 이미지 이름입니다🎜
🎜브라우저가 HTTP 프로토콜을 통해 호스트의 포트 80에 액세스할 때 포트 번호는 생략할 수 있습니다. 얻은 액세스 결과는 다음과 같으며 nginx 서비스가 성공적으로 시작되었음을 나타냅니다. 🎜🎜docker를 사용하여 nginx에서 제공하는 웹 서비스를 설치하는 방법🎜 🎜docker ps를 통해 아래와 같이 실행 중인 컨테이너를 볼 수 있습니다. 🎜rrreee🎜3.파일 매핑🎜🎜우선 컨테이너의 파일 내용을 수정할 수 있다는 점은 분명하지만컨테이너를 다시 시작한 후에는 컨테이너에 기록된 데이터 파일 및 구성 파일에 대한 모든 수정 사항이 손실됩니다. 따라서 컨테이너의 실행 상태와 실행 결과를 저장하기 위해서는 컨테이너에 있는 일부 중요한 데이터 파일, 로그 파일, 구성 파일을 호스트에 매핑해야 합니다.
nginx를 예로 들어 보겠습니다. nginx에는 세 가지 중요한 파일 디렉터리가 있습니다: 🎜 호스트 시스템의 사용자 정의 매핑 경로
컨테이너의 경로
웹사이트 페이지 저장을 위한 디렉터리 /usr/share/nginx/ html /root/nginx/html
nginx 구성 파일 디렉터리 /etc/nginx/nginx.conf /root/nginx/conf/nginx.conf
로그 디렉터리 /var/log/nginx / root/nginx/logs
🎜호스트 머신에 새 파일 디렉터리를 생성합니다.🎜rrreee🎜다음에 있는 파일을 복사합니다. 호스트 머신에 컨테이너
nginx 구성 파일을 호스트 머신에 복사🎜rrreee🎜시뮬레이션된 html 파일을 html 디렉토리에 넣기
저장 인덱스 .html인 다음 파일은 호스트의 /root/nginx/html 디렉토리에 배치됩니다. 매핑 관계로 인해 실제로는 컨테이너의 /usr/share/nginx/에 배치됩니다. html 목차. 🎜rrreee🎜4. 컨테이너 서비스를 다시 시작하세요🎜🎜 -v 매개변수는 호스트 파일과 컨테이너 내 파일 간의 매핑 관계를 표현합니다. 형식은 -v 호스트 디렉터리: 컨테이너 파일 시스템입니다. 디렉토리. 새 컨테이너를 시작합니다. 컨테이너 이름은 nginx-prod🎜rrreee🎜입니다. 새 컨테이너를 시작하기 전에 이전 nginx-zimug 컨테이너를 삭제하세요. 이전 컨테이너가 삭제되지 않으면 새 컨테이너의 포트가 이전 컨테이너의 포트와 충돌하게 됩니다. 컨테이너를 삭제하려면 다음 명령을 사용하세요. 🎜rrreee🎜위의 <code>docker run 명령을 실행하여 새 컨테이너를 시작하세요. 구동 후 브라우저를 통해 호스트의 포트 80에 접속하면 아래와 같이 응답 결과가 나오며, 이는 nginx가 정상적으로 웹 서비스를 제공하고 있음을 증명합니다. 🎜🎜🎜🎜🎜동시에 호스트 시스템에서 nginx 구성을 수정하고 런타임 로그 파일을 볼 수 있습니다. 구성 파일을 변경하면 호스트와 컨테이너의 구성 파일 간에 매핑 관계가 있으므로 컨테이너에서 실행되는 nginx 서비스에 영향을 미칩니다. 🎜🎜🎜🎜

위 내용은 docker를 사용하여 nginx에서 제공하는 웹 서비스를 설치하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제