Docker 容器里面应用端口

在使用 Docker 构建和管理容器时,一个常见的需求是将容器内部的应用程序暴露给外部网络。为了实现这一点,我们需要了解 Docker 容器中的应用端口。

本文将介绍 Docker 容器中应用端口的概念、如何在 Docker 容器中设置应用端口以及如何在主机上访问容器中的应用程序。

什么是 Docker 容器中的应用端口?

当我们在 Docker 中运行一个容器时,Docker 会为容器分配一个虚拟的网络环境。这个网络环境中包含了一个虚拟的 IP 地址,以及一组可以用来访问容器内部应用程序的端口号。

容器内部的应用程序可以监听指定的端口号,接收来自网络的请求。当请求到达容器所在的主机时,Docker 会将该请求转发到容器中运行的应用程序。

如何在 Docker 容器中设置应用端口?

当我们使用 Dockerfile 构建镜像时,可以在 Dockerfile 中使用 EXPOSE 命令来指定容器内部应用程序监听的端口号。例如:

FROM python:3.9
EXPOSE 8080

上述示例中,我们使用 Python 3.9 镜像作为基础镜像,并通过 EXPOSE 命令指定容器内部应用程序监听的端口号为 8080。

在运行容器时,可以使用 -p--publish 参数将容器内部的端口映射到主机上的端口。例如:

docker run -p 8080:8080 myapp

上述命令将容器内部的端口 8080 映射到主机上的端口 8080。这样,在主机上访问 http://localhost:8080 就可以访问容器内运行的应用程序了。

如何在主机上访问容器中的应用程序?

在运行容器并将容器内部的端口映射到主机上的端口后,我们可以通过主机上的 IP 地址和映射的端口来访问容器中运行的应用程序。

例如,如果我们将容器内部的端口 8080 映射到主机上的端口 8080,那么可以在浏览器中访问 http://localhost:8080 来访问容器中运行的应用程序。

如果是在本地开发环境中,我们可以使用 docker-compose 工具来管理多个容器,并在容器之间建立网络连接。这样,我们可以通过容器名称来访问容器中运行的应用程序。

下面是一个使用 docker-compose 来管理容器的示例:

version: "3"
services:
  app:
    build: .
    ports:
      - "8080:8080"

在上述示例中,我们使用 docker-compose 来管理一个名为 app 的容器,并将容器内部的端口 8080 映射到主机上的端口 8080。

通过以上配置,我们可以在主机上使用 http://localhost:8080 来访问容器中运行的应用程序。

总结

本文介绍了 Docker 容器中应用端口的概念以及如何在容器中设置应用端口。通过在 Dockerfile 中使用 EXPOSE 命令指定容器内部监听的端口号,以及在运行容器时使用 -p--publish 参数将容器内部的端口映射到主机上的端口,我们可以方便地访问容器中运行的应用程序。

希望本文能够帮助读者更好地理解和使用 Docker 容器中的应用端口。

甘特图示例:

gantt
    dateFormat  YYYY-MM-DD
    title Docker 容器里面应用端口
    section 准备阶段
    编写文章         :done, a1, 2022-12-01, 1d