docker - 如何解释 docker 容器的端口信息
问题描述
我刚刚使用了一个示例 docker compose yml 文件来创建一些容器,我最终得到了这个:
PS C:\Users\jj> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
70ef2ac09df0 couchdb:latest "tini -- /docker-ent…" 9 seconds ago Up 6 seconds 4369/tcp, 9100/tcp, 0.0.0.0:25984->5984/tcp, 0.0.0.0:25986->5986/tcp jj_server-2_1
4ee92fc98788 couchdb:latest "tini -- /docker-ent…" 9 seconds ago Up 5 seconds 0.0.0.0:5984->5984/tcp, 4369/tcp, 9100/tcp, 0.0.0.0:5986->5986/tcp jj_server-0_1
37c1a3a9be48 couchdb:latest "tini -- /docker-ent…" 9 seconds ago Up 5 seconds 4369/tcp, 9100/tcp, 0.0.0.0:15984->5984/tcp, 0.0.0.0:15986->5986/tcp jj_server-1_1
试图了解端口信息。
4369/tcp, 9100/tcp, 0.0.0.0:15984->5984/tcp, 0.0.0.0:15986->5986/tcp jj2_server-1_1
这就是我在使用的 docker-compose.yml 中的部分内容:
server-0:
environment:
COUCHDB_PASSWORD: -pbkdf2-847043acc65626c8eb98da6d78682fbc493a1787,f7b1a3e4b624f4f0bbfe87e96841eda0,10
COUCHDB_SECRET: 0123456789abcdef0123456789abcdef
COUCHDB_USER: couchdb
NODENAME: couchdb-0
image: couchdb:latest
networks:
network:
aliases:
- couchdb-0
ports:
- "5984:5984"
- "5986:5986"
volumes:
- "volume-0:/opt/couchdb/data"
完整的 yml 文件可以在这里找到:https ://github.com/apache/couchdb-docker/issues/74 我唯一改变的是节点的名称。
在这个特定容器的情况下......这是否意味着主机机器的端口 5984 映射到容器的 5984?而在 server2 的情况下,HOST 机器的端口 25984 映射到容器的 5984?
有人可以解释其他一些端口吗?在某些情况下,4369 似乎被用于集群……比如 RabbitMQ ……但我不确定 couchDB 是否是这种情况。9100 也是如此……不知道为什么会创建它。对不起,我是码头菜鸟。和一个 couchDB 菜鸟。
谢谢。
解决方案
在这个特定容器的情况下......这是否意味着主机机器的端口 5984 映射到容器的 5984?而在 server2 的情况下,HOST 机器的端口 25984 映射到容器的 5984?
是的,这意味着:
- 主机的 5984 端口将映射到容器
jj_server-0_1
的 5984 端口 - 主机的 25984 端口将映射到容器
jj_server-2_1
的 5984 端口 - 请注意,主机内的所有端口以及不同的容器都需要是唯一的,而不同的容器可以暴露相同的端口。含义
jj_server-0_1
和jj_server-2_1
都可以暴露5984端口
有人可以解释其他一些端口吗?在某些情况下,4369 似乎被用于集群……比如 RabbitMQ ……但我不确定 couchDB 是否是这种情况。9100 也是如此……不知道为什么会创建它。对不起,我是码头菜鸟。和一个 couchDB 菜鸟。
EXPOSE 5984 4369 9100
您可以在他们的Dockerfile中找到其他一些端口,例如 4369 或 9100 作为命令的结果。这只是一种方便且可选的方式来指示此映像/容器将侦听这些端口,如果需要,您可以将它们公开或链接到您的主机。
推荐阅读
- c++ - 编译时将 wchar 缩小为 char
- python - 使用没有 pgid 和 sid 的 xpath 从代码中获取链接
- docker - docker-compose:services.db 不支持的配置选项:'jupyter'
- maven - 使用 Maven 从 AsciiDoc 生成 PDF 并将其放置在不同的模块中
- java - 使用 GSON 将 JSON 转换为 Java 类
- reactjs - 无法从渲染的单元格 ag-grid 更新其他单元格反应
- sql-server - SQL Server - The metadata could not be determined because statement 'EXECUTE master.dbo.xp_sqlagent_is_starting
- flutter - 如何让未来的小部件在有连接时自动加载数据
- php - 为什么我的 php 包含的文件更改没有反映
- python - Python数据框填充不存在