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

今天,我从“Docker Toolbox”切换到“Doc​​ker for Mac”,因为Docker现在终于可以写入我的User目录了(这不适用于“Docker Toolbox”) – Yay!

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

由于我的localhost在默认情况下侦听各种端口(80,443,…),我不想总是添加新的创build的端口,这与标准的端口不冲突,我的本地开发域( example.dev:8443 ),我想知道如何像以前一样运行我的容器。

我读了关于networkconfiguration,并尝试了很多东西(创build一个新的主机networking,暴露在它前面的IP端口,…),但没有得到它的工作。

我需要什么样的configuration来运行我的应用程序容器与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 

然后从你的应用程序configuration,你可以使用“mysql”作为数据库服务器的主机名。

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

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

但是我build议你现在只使用不同的端口来运行。 即8080:80