如何在自己的网络中运行Docker容器

时间:2016-07-11 10:13:58

标签: docker docker-compose

今天我从“Docker Toolbox”切换到“Doc​​ker for Mac”,因为Docker现在终于对我的User目录(不能与“Docker Toolbox”一起使用)进行写访问 - 是的! / p>

但是这个改变还包括所有容器现在在我的localhost下运行而不是像以前那样在Docker的IP下运行(例如192.168.99.100)。

由于我的localhost默认监听各种端口(80,443,...),我不想总是添加新创建的端口,这与标准端口不相符本地开发域(例如example.dev:8443),我想知道如何像以前一样运行我的容器。

我读了network configs并尝试了很多东西(创建一个新的主机网络,在它前面暴露一个带有IP的端口,......),但是没有让它工作。

使用IP 192.168.99.100运行我的应用容器需要什么样的配置?那是我的docker-compose.yml到目前为止。

version: '2'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    depends_on:
      - mysql
      - redis
      - memcached
    ports:
      - 80:80
      - 443:443
      - 22:22
      - 3000:3000
      - 3001:3001
    volumes:
      - ./app/:/app/
      - /tmp/debug/:/tmp/debug/
      - ./:/docker/
    volumes_from:
      - storage
    # cap and privileged needed for slowlog
    cap_add:
      - SYS_PTRACE
    privileged: true
    env_file:
      - etc/environment.yml
      - etc/environment.development.yml

  mysql:
    build:
      context: docker/mysql/
      dockerfile: MariaDB-10
    ports:
      - 3306:3306
    volumes_from:
      - storage
    volumes:
      - ./data/mysql:/var/lib/mysql
      - /tmp/debug/:/tmp/debug/
    env_file:
      - etc/environment.yml
      - etc/environment.development.yml

  redis:
    build: docker/redis/
    volumes_from:
      - storage
    env_file:
      - etc/environment.yml
      - etc/environment.development.yml

  memcached:
    build: docker/memcached/
    volumes_from:
      - storage
    env_file:
      - etc/environment.yml
      - etc/environment.development.yml

  storage:
    build: docker/storage/
    volumes:
      - /storage

2 个答案:

答案 0 :(得分:0)

您需要声明" networks:"对于您的每项服务:

e.g。

version: '2'
services:
    app:
        image: xxxx:xxx
        ports:
            - "80:80"
        networks:
            - my-network
    mysql:
        image: xxxx:xxx
        networks:
            - my-network
networks:
    my-network:
        driver: bridge

然后从您的应用配置侧面,您可以使用" mysql"作为数据库服务器的主机名。

答案 1 :(得分:-1)

您可以在撰写文件中定义网络,然后将任何服务添加到网络中。

https://docs.docker.com/compose/networking/

但我建议你现在只使用不同的端口进行本地运行。即8080:80