9.7. 使用端口映射在容器间通信


在两个容器之间进行通信的最方便方法是使用公布的端口。可使用两种方式发布端口:自动或手动发布。

先决条件

  • container-tools 元数据包已安装。

流程

  1. 运行未发布的容器:

    # podman run -dt --name=web1 ubi10/httpd-24
    Copy to Clipboard Toggle word wrap
  2. 运行自动发布的容器:

    # podman run -dt --name=web2 -P ubi10/httpd-24
    Copy to Clipboard Toggle word wrap
  3. 运行手动发布的容器,并发布容器端口 8080:

    # podman run -dt --name=web3 -p 8888:8080 ubi10/httpd-24
    Copy to Clipboard Toggle word wrap
  4. 列出所有容器:

    # podman ps
    
    CONTAINER ID  IMAGE                                            COMMAND               CREATED         STATUS         PORTS                                             NAMES
    db23e8dabc74  registry.access.redhat.com/ubi9/httpd-24:latest  /usr/bin/run-http...  23 seconds ago  Up 23 seconds  8080/tcp, 8443/tcp                                web1
    1824b8f0a64b  registry.access.redhat.com/ubi9/httpd-24:latest  /usr/bin/run-http...  18 seconds ago  Up 18 seconds  0.0.0.0:33127->8080/tcp, 0.0.0.0:37679->8443/tcp  web2
    39de784d917a  registry.access.redhat.com/ubi9/httpd-24:latest  /usr/bin/run-http...  5 seconds ago  Up 5 seconds  0.0.0.0:8888->8080/tcp, 8443/tcp                  web3
    Copy to Clipboard Toggle word wrap

    您可以看到:

    • 容器 web1 没有公布的端口,只能通过容器网络或网桥访问。
    • 容器 web2 已自动映射端口 43595 和 42423,以分别发布应用端口 8080 和 8443。

      注意

      自动端口映射是可能的,因为 registry.access.redhat.com/10/httpd-24 镜像在 Containerfile 中有 EXPOSE 8080EXPOSE 8443 命令。

    • 容器 web3 有一个手动发布的端口。主机端口 8888 映射到容器端口 8080。
  5. 显示 web1web3 容器的 IP 地址:

    # podman inspect --format='{{.NetworkSettings.IPAddress}}' web1
    # podman inspect --format='{{.NetworkSettings.IPAddress}}' web3
    Copy to Clipboard Toggle word wrap
  6. 使用 <IP>:<port> 表示法访问 web1 容器:

    # curl 10.88.0.2:8080
    ...
    <title>Test Page for the HTTP Server on Red Hat Enterprise Linux</title>
    ...
    Copy to Clipboard Toggle word wrap
  7. 使用 localhost:<port> 表示法访问 web2 容器:

    # curl localhost:43595
    ...
    <title>Test Page for the HTTP Server on Red Hat Enterprise Linux</title>
    ...
    Copy to Clipboard Toggle word wrap
  8. 使用 <IP>:<port> 表示法访问 web3 容器:

    # curl 10.88.0.4:8080
    ...
    <title>Test Page for the HTTP Server on Red Hat Enterprise Linux</title>
    ...
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat