docker - Docker TCP与主机端口

标签 docker networking tcp mapping port

有人可以帮我理解这一点吗,我有一个Dockerfile和dockercompose.yaml

当我做docker-compose up时,我看到tcp与暴露的端口相比有所不同,这是文件

> Dockerfile 
FROM msridhara/tomcat 
VOLUME /tmp  
CMD ["catalina.sh","run"] 
EXPOSE 81
>docker-compose.yaml
version: '2'
services:
  web:
    image: msridtomcat
    build: .
    container_name: mcontainer
    restart: always
    volumes:
      - /home/murali/website/containerjob/war/:/usr/local/tomcat/webapps/
#      - /home/ubuntu/webimage/index.html:/var/www/html/index.html
    ports:
      - "81:8080"
docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                          NAMES
2cb36ee8c5ee        msridtomcat         "catalina.sh run"   58 seconds ago      Up 57 seconds       83/tcp, 0.0.0.0:81->8080/tcp   mcontainer

请看83 / tcp?它从哪里来?
docker inspect -- results in 
"NetworkSettings": {
            "Bridge": "",
            "SandboxID": "397ab289e556f8ee4b92c47e806a11a1f76d53cb398bdd5701e10e20a3362882",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "8080/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "81"
                    }
                ],
                "83/tcp": null
            },

谢谢
穆拉利

最佳答案

此tcp 83是由于Dockerfile中的Expose 83引起的。刚刚从Dockerfile中删除了Expose,并通过docker-compose yaml暴露了端口。一切都很好

关于docker - Docker TCP与主机端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62001730/

相关文章:

sql - 在网络 PC 上找不到 SQL 实例名称

c - 关于 C 程序中 TCP 和 UDP 连接的问题

ubuntu - docker 主机卷需要哪些权限?

android - 在 Android 模拟器中模拟网络问题

ruby-on-rails - 带有初始数据的 docker postgres 不会在提交中持久化

amazon-web-services - ECS 网络主机模式和链接 = CannotCreateContainerError : Container already exists

c# - 正确停止异步 TCP 应用程序

java - C 服务器与 Java 客户端套接字连接。在客户端上阅读消息时,我看到实际消息之前有空格

go - Cadvisor 支持 ELK 堆栈

azure - Azure 上端口 443 的 Kubernetes list