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

标签 docker docker-compose

今天,我从“Docker Toolbox”切换到“Mac Docker”,因为Docker现在终于可以对我的User目录(不适用于“Docker Toolbox”)进行写访问了-是的!

但是此更改还包括现在所有容器都在我的本地主机下运行,而不是像以前那样在Docker的IP下运行(例如192.168.99.100)。

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

我阅读了有关network的配置信息,并尝试了很多方法(创建一个新的主机网络,公开其前面带有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

最佳答案

您需要为每个服务声明“networks:”:

例如

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”作为数据库服务器的主机名。

关于docker - 如何在自己的网络中运行Docker容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38304374/

相关文章:

docker-compose - Docker Compose 中的 'environment: &environment' 是什么意思?

linux - Docker 上的 nginx: [emerg] socket() 0.0.0.0:80 失败(13:权限被拒绝)

mysql - 如何在 Docker 中运行 Sequelize 迁移

docker - 如何从命令行重置 docker-for-mac v2.1.0.0 kubernetes?

linux - 什么是 moby 运行时?

PostgreSQL UNIQUE 约束未应用于 Docker 容器

drupal - 如何将docker与drupal和drush一起使用?

docker - Docker 的 Google Cloud Logging 驱动程序

Docker 容器具有文件系统加密功能?

docker - 无法使用 docker-compose 挂载文件