迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 > Docker >

在 Docker 容器中公开多个端口

作者:迹忆客 最近更新:2023/04/17 浏览次数:

互联网上有不同类型的通信,最常见的包括文件传输、发送电子邮件和提供网页服务。 为了使这种通信成为可能,我们利用有助于识别通信类型的端口号。

例如,文件传输协议使用端口 20 和 21,简单邮件传输协议使用 25,超文本传输协议使用 25。

同样,Docker 容器使用端口来实现万维网上不同设备之间的通信。 在本篇文章中,我们将学习如何使用 Nginx 应用程序在 Docker 容器中公开多个端口。


创建 NGINX 应用程序

打开 WebStorm IDEA 并选择文件>新建>项目。 在打开的窗口中,选择 Empty Project 并将项目名称从 untitled 更改为 web-app。

最后,按标有创建的按钮创建一个空项目。

请注意 ,我们也可以使用任何其他开发环境,因为使用什么开发环境并不重要。 由于 NGINX 用于提供静态内容,因此我们不需要任何其他配置文件。

生成项目后,在 web-app 文件夹中创建一个名为 index.js 的文件,并将以下代码复制并粘贴到该文件中。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>Welcome to Nginx !</h1>

</body>
</html>

该文件包含一个带有标题的简单网页,可帮助我们测试应用程序。 修改 HTML 内容以显示任何需要的内容。


创建一个 Dockerfile

在 web-app 文件夹中创建一个名为 Dockerfile 的文件,并将以下说明复制并粘贴到该文件中。

FROM nginx:1.23.1-alpine
ADD . /usr/share/nginx/html
  1. FROM - 设置在其上创建自定义镜像的基础镜像,在我们的例子中,我们使用 alpine 来提取 NGINX 的轻量级版本。
  2. ADD - 将当前文件夹中的文件和文件夹复制到我们镜像的文件系统 /usr/share/nginx/html。

构建镜像

使用键盘快捷键 ALT+F12 在开发环境中打开一个新的终端窗口,并使用以下命令创建带有标签 web-app:latest 的镜像。

~/WebstormProjects/web-app$ docker build --tag web-app:latest .

这条命令执行了我们的Dockerfile,我们可以查看顺序执行的两条指令,如下。

=> [1/2] FROM docker.io/library/nginx:1.23.1-alpine@sha256:082f8c10bd47b6acc8ef15ae61ae45dd8fde0e9f389a8b5cb23c3740  0.2s
 => => resolve docker.io/library/nginx:1.23.1-alpine@sha256:082f8c10bd47b6acc8ef15ae61ae45dd8fde0e9f389a8b5cb23c3740  0.2s
 => CACHED [2/2] ADD . /usr/share/nginx/html

运行具有多个端口的 Docker 容器

在用于构建映像的同一终端窗口中,使用以下命令运行名为 web-app-prod 的容器,主机上的端口 3000 和 5000 侦听容器上的端口 80。

~/WebstormProjects/web-app$ docker run --name web-app-prod -d -p 3000:80 -p 5000:80 web-app:latest

为了在容器上公开多个端口,我们使用了两个连续的 -p 标志,在主机上分配两个不同的端口来侦听容器上的端口 80。


测试端口

要验证我们的容器是否按预期工作,请打开任何浏览器并向 localhost:3000 (http://localhost:3000/) 和 localhost:5000 (http://localhost:5000/) 发出请求。 由于端口监听同一个容器,我们得到了两个请求返回的 NGINX 应用程序的相同页面,如下所示。

Testing the Ports - Localhost 3000

Testing the Ports - Localhost 5000


总结

本文教会了我们如何利用 NGINX 应用程序在 Docker 容器中公开多个端口。 请注意,这是公开多个端口的最常用方法,但我们可以使用其他方法来实现相同的目标。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Linux 中托管 Docker Internal

发布时间:2023/04/18 浏览次数:139 分类:Docker

Docker 允许开发人员通过将应用程序包装在称为容器的标准化单元中来高效地构建、测试和部署应用程序。 在使用 Docker 容器时,您可能会遇到需要将容器与主机连接的场景。

在 Docker 中设置工作目录

发布时间:2023/04/18 浏览次数:82 分类:Docker

在 Docker 中,我们可以通过编辑 Dockerfile 并添加密钥 WORKDIR 来设置我们的工作目录。本文将讨论在 Docker 中更改我们当前和默认的工作目录。

将用户添加到 Docker 容器

发布时间:2023/04/18 浏览次数:187 分类:Docker

在本文中,我们将学习如何通过实现返回产品数组的 Express 应用程序将用户添加到 Docker 容器。

使用 Docker 网络主机命令

发布时间:2023/04/18 浏览次数:112 分类:Docker

在本文中,我们将学习如何使用 --network 命令将容器添加到主机网络。 如果我们不使用此命令指定网络,我们还将了解如何将容器添加到默认网络。

清除 Docker 容器日志

发布时间:2023/04/18 浏览次数:181 分类:Docker

本文介绍了我们可以用来清除 docker 容器中日志的不同方法。日志是应用程序在特定事件或状态发生时记录的信息,它们帮助我们监控应用程序并采取必要的措施。

Docker 中的守护进程日志位置

发布时间:2023/04/18 浏览次数:175 分类:Docker

本文将讨论守护进程事件以及我们通常可以在哪里找到每个操作系统 (OS) 的守护进程日志。

Dockerfile 中 COPY 和 ADD 命令的区别

发布时间:2023/04/18 浏览次数:158 分类:Docker

在 Dockerfile 中,我们可以使用 COPY 或 ADD 命令复制这些文件。 这些命令在功能上是相同的; 但是,存在一些差异。本文介绍了 Dockerfile 中 COPY 和 ADD 命令之间的区别。

Docker 中的 --rm 标志

发布时间:2023/04/18 浏览次数:77 分类:Docker

本文介绍如何在 docker 中使用 --rm 命令。 此外,它还提供了使用命令的优势。

在 Docker 中设置环境变量

发布时间:2023/04/18 浏览次数:107 分类:Docker

本文教大家如何设置环境变量以及如何在必要时从正在运行的容器访问变量。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便