【问题标题】:Mapping ports in docker-compose file doesn't work. Network unreachable在 docker-compose 文件中映射端口不起作用。网络不可达
【发布时间】:2018-09-21 02:01:13
【问题描述】:

我正在尝试将容器中的一个端口映射到the docs 之后的主机上的一个端口,但它似乎不起作用。

在我运行docker-compose -f development.yml up --force-recreate 之后,我没有收到任何错误。但如果我尝试使用localhost:8081 访问frontend 服务,则网络无法访问。

我使用docker inspect查看IP并尝试ping它,但仍然没有。

这是我正在使用的 docker-compose 文件。而我做错了什么?

development.yml

version: '3'
services:
  frontend:
    image: nginx:latest
    ports:
      - "8081:80"
    volumes:
      - ./frontend/public:/var/www/html
  api:
    image: richarvey/nginx-php-fpm:latest
    ports:
      - "8080:80"
    restart: always
    volumes:
      - ./api:/var/www/html
    environment:
      APPLICATION_ENV: development
      ERRORS: 1
      REMOVE_FILES: 0
    links:
      - db
      - mq
  db:
    image: mariadb
    restart: always
    volumes:
      - ./data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: dEvE10pMeNtMoDeBr0
  mq:
    image: rabbitmq:latest
    restart: always
    environment:
      RABBITMQ_DEFAULT_USER: developer
      RABBITMQ_DEFAULT_PASS: dEvE10pMeNtMoDeBr0

【问题讨论】:

  • 你用什么来运行 Docker?
  • docker ps 看看你的容器是真的启动还是已经退出? netstat 看看8081 是否真的在您的主机上打开?
  • @pacuna 我使用的是 Windows 10 家庭版,所以我必须使用 VirtualBox。
  • 所以如果您已经在该端口上尝试了 vmbox ip 但它不起作用,也许 vmbox 没有打开该端口?还要记住 localhost 不会立即工作,除非您将该端口从 VM 转发到您的主机
  • docker-toolbox 会自动处理吗?在 Linux 上有点困惑我没有这些问题(原因很明显)

标签: docker docker-compose


【解决方案1】:

您正在使用 docker 工具箱。 Docker 工具箱使用 docker 机器。在带有 docker 工具箱的 Windows 中,您在具有自己 IP 的虚拟机下运行,因此 localhost 不是您的容器所在的位置。您需要前往 192.168.99.100:8081 才能找到您的前端。

根据docker机器上的文档(https://docs.docker.com/machine/get-started/#run-containers-and-experiment-with-machine-commands):

$ docker-machine ip default
 192.168.99.100

【讨论】:

    猜你喜欢
    • 2017-12-08
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多