📜  Docker——NGINX 的容器

📅  最后修改于: 2022-05-13 01:58:43.568000             🧑  作者: Mango

Docker——NGINX 的容器

Docker 是一个开源平台,使开发人员能够轻松地开发、发布和运行应用程序。它将应用程序及其依赖项打包在一个隔离的虚拟容器中,该容器通常在 Linux 系统上运行,与虚拟机相比非常轻巧。原因是容器共享操作系统内核,只加载了它的二进制文件/库。要了解有关 docker 的更多信息,请阅读 docker 简介。

在本文中,我们将为 NGINX 创建并运行一个 docker 容器。之后,我们将在 Nginx 容器上托管一个非常简单的小型网站。

让我们从一些有用的概念和定义开始。

为什么选择 Docker 容器?

为了完美地回答这个问题,我们应该问他们解决了什么问题。

大多数开发人员面临的一个常见问题是应用程序在一台机器上运行但不在另一台机器上运行。这可能是由于不同的操作系统、不同版本的库(例如开发人员使用 nodejs 14.1 开发应用程序但云实例安装了 nodejs 9.2)所致。

这正是 docker 容器解决的问题,它打包了应用程序的库和所有依赖项,预先构建并准备好执行。它与其他容器隔离,使应用程序感觉它是系统上运行的唯一应用程序。

许多组织现在正在从虚拟机迁移到容器,因为容器是轻量级的,并且使用提供的 CLI 易于维护。

它还有助于轻松适应微服务架构,远离传统的单体系统。其他好处包括可扩展性、修改和维护。

Docker 镜像和 Docker Hub

docker 镜像就像 VM 环境中的快照。它在特定时间记录有关 docker 容器的信息,例如所有库以及应用程序所需的特定版本。它是不可变的,但可以很容易地复制并与他人共享。

图像通常与其他人共享,以使其他人能够在它应该运行的相同环境中运行应用程序,并且图像包含有关该环境的所有信息。

Docker 中心就是这样一个平台,您可以在其中找到并与他人共享容器映像。一些最常见的图像用于 Nginx、Nodejs、Mongo DB 等等。

NGINX 的 Docker 容器

什么是 NGiNX?

当用户从 Web 服务器请求页面时,Web 服务器接受请求并将适当的响应发送回用户。 Nginx 可以是那个 Web 服务器。

NGINX 是一个开源 Web 服务器,也用于反向代理、HTTP 负载平衡和电子邮件代理。它在使用系统资源方面非常高效,并且可以使用事件驱动和异步架构处理大量同时请求。这就是为什么 Nginx 是处理高负载的网站(如电子商务、云存储和搜索引擎)的绝佳选择的原因。

为 NGINX 创建一个 docker 容器

1. 使用以下命令从 docker hub 下载 NGINX 的官方镜像。

docker pull nginx:latest

此命令将获取 nginx 映像的最新版本,但您可以将“latest”替换为您需要的版本并且将被下载。

2. 使用以下命令确认镜像已下载。

docker images

结果应该包括 nginx 以及像这样的其他图像。

3. 现在使用以下命令运行 docker 映像。

docker run -p 8000:80 nginx

说明:使用上面的命令,您正在运行 nginx 服务器,其中-p是将端口 8000(本地计算机)映射到容器中的端口 80 的标志,因为 80 是默认情况下 nginx 服务的端口。

4. 访问 localhost 的 8000 端口验证安装。我们将得到 nginx web 服务器的默认页面,如下所示:

5. 要停止 docker 容器,请按CTRL + C

在 Docker 容器上运行的 NGINX 上托管一个简单的网站

我们将创建两个文件,一个是 index.html 和 aboutme.html,并将这些文件托管在运行 Nginx 服务器的新容器上。

1、创建两个文件后的文件结构如下:

2. index.html 和 aboutme.html 包含以下代码:

索引.html

HTML



    
    
    
    NGINX Example


    

HI!!

    

This is NGINX

    


HTML



    
    
    
    About me


    

Hello!

    

This is ganesh prasad!



说明:此网页包含两个页眉和一个页脚,其中包含指向“关于我”页面的链接。

aboutme.html

HTML




    
    
    
    About me


    

Hello!

    

This is ganesh prasad!

说明:此页面显示了一个带有“Hello”作为文本的 h1 标题和一个带有“This is Ganesh Prasad”的 h3 标题作为其正文。

3.使用以下命令创建一个docker容器,将本地机器的端口映射到nginx服务的端口,并将这两个文件挂载到容器中nginx用来托管文件的位置( /usr/share/nginx/html )。

docker run -d -p 8000:80 -v address_to_folder_with_files_locally:/usr/share/nginx/html --name my-nginx-server nginx

解释:

  • 标志-d用于在后台以分离模式运行服务器。
  • -p用于将本地端口映射到服务器正在服务的容器端口。
  • -v用于将包含文件的文件夹挂载到 Nginx 用于提供网页的容器中的某个位置。
  • --name是提供容器的名称,最后我们提供镜像名称。

输出:

在浏览器中访问地址localhost:8000 ,您将看到以下内容:

主页

单击“关于我”链接将带您进入“关于我”页面。

关于我的页面

要停止 docker 容器,您可以使用以下命令。

docker stop my-nginx-server

结论:

在本文中,我们简要了解了 docker、container、images 和 docker hub。然后我们使用来自 docker hub 的官方 nginx 镜像创建了一个 docker 容器并运行它。我们还学习了如何列出系统上的所有图像以及如何停止 docker 容器。之后,我们在 docker 容器上运行的 nginx 服务器上托管了一个小网页。