首页 > 解决方案 > 如何使用 docker-compose 在 docker/container 之外公开容器端口?

问题描述

我有一个容器,它有几个端口,我想9001远程访问这个 docker 之外的一个端口()。


我已经搜索过,我找到了expose port关键字,我做到了,但没有奏效。

如何公开 docker 端口以使您的容器可从外部访问
参考


这是我的 docker-compose 文件:

version: '3'

services:
  nginx:
      image: nginx:latest
      container_name: nginx
      ports:
        - "8010:8010"

      volumes:
        - .:/code
        - ./nginx/default.conf:/etc/nginx/conf.d/default.conf

      links:
        - ivms

      restart: unless-stopped

  ivms:
      build: .
      container_name: ivms
      command: bash bashes/createDB.sh
      volumes:
        - .:/code
      expose:
        - "8010"
        - "9001"  # exposed disired port
      ports:
        - "9001:9001"

我在 docker-compose 文件上方运行:$ docker-compose up -d

我应该怎么做才能访问server_IP:9001 --> 192.168.1.131:9001


[注意]:


任何帮助,将不胜感激。

标签: dockerdocker-composeportzeromqpyzmq

解决方案


如果你想实际映射你应该使用的端口

ivms:
  build: .
  container_name: ivms
  command: bash bashes/createDB.sh
  volumes:
    - .:/code
  ports:
    - "8010:8010"
    - "9001:9001"  # now you can access them locally

警告您对这两个服务 ivms 和 nginx 使用相同的端口

EXPOSE 指令通知 Docker 容器在运行时侦听指定的网络端口。可以指定端口监听 TCP 还是 UDP,如果不指定协议,则默认为 TCP。

EXPOSE 指令实际上并不发布端口。它充当构建映像的人和运行容器的人之间的一种文档类型,关于打算发布哪些端口。-Docker 文档


推荐阅读