在本教程中,您将学习如何将 Nginx 作为 Docker 容器运行,并将其公开给您的本地网络。此外,您将学习如何创建 Docker 数据卷以在容器和主机文件系统之间共享信息。

Nginx 是一种流行的开源软件,用于 Web 服务、反向代理、缓存、负载平衡等。它非常流行并在当今许多高流量网站上使用。Docker 最常见的工作负载之一是使用它来容器化 Web 服务器。我们将向您展示如何使用 Nginx 进行设置。因此,让我们带您完成整个过程。

Docker 是一个容器化平台,用于将您的应用程序打包成一个易于管理的容器映像。

先决条件

您必须满足以下要求才能完成本教程:

Docker 应该已安装并在您的系统上本地运行。

您需要一个 root 帐户,或者用户可以运行 sudo 命令。

在 Docker 中设置 Nginx

拉取镜像

首先,我们将拉取官方的 Nginx 镜像。在您的 docker 主机上,在终端上运行以下 Docker pull 命令以从 Docker hub下载 Nginx最新镜像。

linuxmi@linuxmi:~/www.linuxmi.com$ sudo docker pull nginx

输出如下:

Using default tag: latest

latest: Pulling from library/nginx

e1acddbe380c: Pull complete

e21006f71c6f: Pull complete

f3341cc17e58: Pull complete

2a53fa598ee2: Pull complete

12455f71a9b5: Pull complete

b86f2ba62d17: Pull complete

Digest: sha256:4d4d96ac750af48c6a551d757c1cbfc071692309b491b70b2b8976e102dd3fef

Status: Downloaded newer image for nginx:latest

docker.io/library/nginx:latest

运行 Nginx Docker 容器

现在,我们已准备好运行 Nginx Docker 容器并将其端口公开给您的本地网络。为此,我们使用以下命令运行镜像:

linuxmi@linuxmi:~/www.linuxmi.com$ docker run -d -p 80:80 --name my-nginx-server nginx

输出如下:

f204ea685629dbc1d09b4a2d5f6fb64f5ef84be7d58a1b7449cc144c65c90c92

docker: Error response from daemon: driver failed programming external connectivity on endpoint my-nginx-server (27d91a249b151ea87841c46775647d7af43d12c3e753061531173f05016e485b): Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use.

-d – 以分离模式启动容器(容器在后台运行)。

-p – 将一个端口从容器绑定到主机(将主机流量端口 80 路由到容器端口 80)。

-name – 我们的 Docker 容器的名称。

最后一个参数“ nginx”告诉 Docker 容器使用哪个镜像。

现在打开浏览器访问http://localhost,您应该会看到一个 Nginx Web 服务器提供其默认网页。

就是这样。你有一个 NGINX 的工作实例,通过 Docker 容器。

列出 Docker 容器

要列出所有正在运行的Docker 容器,请执行以下命令:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo docker container ls -all

根据上面的输出,我们可以使用以下两种方法的其中一种停止我们的 Nginx Docker 容器:

linuxmi@linuxmi:~/www.linuxmi.com$ docker stop f204ea685629

f204ea685629

linuxmi@linuxmi:~/www.linuxmi.com$ docker stop my-nginx-server

my-nginx-server

要查看所有容器,甚至那些未运行的容器,您需要添加 -a 标志。

linuxmi@linuxmi:~/www.linuxmi.com$ sudo docker container ls -a

在 Nginx Docker 容器和主机之间共享数据

Docker 容器是短暂的。默认情况下,在容器内创建的任何数据仅在容器内且仅在容器运行时可用。

因此,让我们向您展示如何在主机上访问容器内部的数据。我们的目标是创建一个简单的 HTML 文件,将其托管在容器中,并使用 Nginx Docker 容器将其提供给外部。此设置允许我们拥有在容器外部托管的持久网站内容。

为了实现这个功能,我们将使用Docker 中的绑定挂载功能。使用绑定挂载时,主机上的文件或目录会挂载到容器中。

因此,让我们首先在主目录中为您的网站内容创建一个新目录。

linuxmi@linuxmi:~/www.linuxmi.com$ mkdir ~/www

现在让我们创建一个简单的 HTML 文件并在您的索引页面上放置一些文本。

linuxmi@linuxmi:~/www.linuxmi.com$ vim ~/www/index.html

编写HTML代码片段到里面。保存文件并退出 Vim。

接下来,我们将在容器上运行带有附加卷的 Nginx Docker 容器/usr/share/nginx/html到当前保存文件的主机www目录上index.html。

linuxmi@linuxmi:~/www.linuxmi.com$ docker run -d -p 80:80 -v ~/www:/usr/share/nginx/html/ --name my-nginx-server nginx

Nginx 容器默认设置为在 /usr/share/nginx/html/. 在上面的命令中,该-v 选项设置了一个绑定挂载卷,它将 Nginx Docker 容器内部的目录链接 到  主机上的目录。/usr/share/nginx/html/~/www

Docker 使用 a : 将主机路径与容器路径分开。主机路径始终排在第一位。

现在,如果您浏览http://localhost,您将在显示窗口上看到下面给出的输出。

就这样。您现在有一个正在运行的 Nginx Docker 容器,它为自定义网页提供服务。

结论

Nginx 和 Docker 可以很好地协同工作。在本教程中,我们演示了如何设置和使用 Nginx Docker 容器。现在,您还知道如何在容器和主机文件系统之间共享信息。

如有疑问,请留下您的意见。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

触发修改文章时间【fastadmincms开发记录】|fastadmincms二次开发,触发,修改,文章,时间,fastadmin,ms,开发,记录
触发修改文章时间【fastadmincms开发记录】
在tp5中过滤输入的零宽度字符【fastadmincms开发记录】|fastadmincms二次开发,在tp5中,过滤,输入,的零,宽度,字符,fastadmin,ms,开发,记录
在tp5中过滤输入的零宽度字符【fastadmincms开发记录】
处理tag标签中的0宽空格【fastadmincms开发记录】|fastadmincms二次开发,处理,tag,标签,中的,0宽,空格,fastadmin,ms,开发,记录
处理tag标签中的0宽空格【fastadmincms开发记录】
添加专题时tags标签id出错【fastadmincms开发记录】|fastadmincms二次开发,添加,专题,时tags,标签,id,出错,fastadmin,ms,开发,记录
添加专题时tags标签id出错【fastadmincms开发记录】
20230518----模板 广告【fastadmincms开发记录】|fastadmincms二次开发,20230518,模板,广告,fastadmin,ms,开发,记录
20230518----模板 广告【fastadmincms开发记录】
cms添加视频模型【fastadmincms开发记录】|fastadmincms二次开发,ms,添加,视频,模型,fastadmin,开发,记录
cms添加视频模型【fastadmincms开发记录】
新增单篇收费复制功能【fastadmincms开发记录】|fastadmincms二次开发,新增,单篇,收费,复制,功能,fastadmin,ms,开发,记录
新增单篇收费复制功能【fastadmincms开发记录】
添加开会员折扣功能【fastadmincms开发记录】|fastadmincms二次开发,添加,开会,折扣,功能,fastadmin,ms,开发,记录
添加开会员折扣功能【fastadmincms开发记录】

历史上的今天:05月03日

热门专题

APP开发|app开发_app开发公司_app软件开发_专业app开发_云南app开发公司_app定制_原生app开发定制
APP开发
综合高中|云南综合高中,昆明综合高中,综合高中能考本一吗,综合高中和普通高中的区别,综合高中是什么意思,综合高中能参加全国统一高考吗,综合高中可以考哪些大学,综合高中的学籍是什么
综合高中
小程序开发|微信小程序,小程序开发,小程序,小程序制作,微信小程序开发,小程序公司,小程序开发公司,分销,三级分销系统,分销系统
小程序开发
大理科技管理学校|大理科技管理学校,大理科技,大理科技中等职业技术学校,大理科技管理中等职业技术学校,大理科技学校
大理科技管理学校
外贸网站建设|外贸网站建设,英文网站制作,英文网站设计,美国主机空间,外贸建站平台,多语言网站制作
外贸网站建设
自考本科|自考本科有用吗,自考文凭,自考本科文凭,自考文凭有用吗,自考本科文凭有用吗,自考文凭承认吗
自考本科
云南开放大学|云南开放大学报名,云南开放大学报考,云南开放大学,什么是云南开放大学,云南开放大学学历,云南开放大学学费,云南开放大学报名条件,云南开放大学报名时间,云南开放大学学历,云南开放大学专业
云南开放大学
大理科技管理学校|大理科技管理中等职业技术学校,大理市科技管理中等职业技术学校
大理科技管理学校

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部