首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker组成网桥网络

Docker组成网桥网络
EN

Stack Overflow用户
提问于 2019-01-29 00:54:10
回答 1查看 95关注 0票数 0

我正在做一个有2个docker撰写文件的项目。一边是我的堆栈和rails服务器。

代码语言:javascript
复制
version: '3'
  services:
    web:
      entrypoint: ["./docker-entrypoint.sh"]
      build:
        context: .
        dockerfile: <MY FILE>
        command: bundle exec rails s -b 'ssl://0.0.0.0?key=/app/ssl/server.key&cert=/app/ssl/server.crt'
       volumes:
         - .:/app
       ports:
         - "443:3000"
       stdin_open: true
       tty: true
       networks:
         - ekoma
networks:
  ekoma:
    driver: bridge

在另一边,我有一个wordpress实例

代码语言:javascript
复制
version: '3'
  services:
    wordpress:
      image: wordpress:latest
    ports:
      - 8888:80
    networks:
      - app_ekoma
networks:
  app_ekoma:
    external:
      name: app_ekoma

我正在简化组成文件,但如果需要,我可以提供更多。出于某些原因,在我的wordpress实例中,我可以使用"web“主机,甚至可以启动一个curl调用:curl web:3000

但是请求挂起并且没有完成。

这也可能是rails服务器的问题,但我将其用作API,并且从外部网络连接到localhost:443没有任何问题。

感谢您的关注,任何想法都将不胜感激:)

EN

回答 1

Stack Overflow用户

发布于 2021-06-07 13:57:08

您可以创建一个User-defined Bridge network,然后将两个容器连接到您的网桥网络。

要创建桥,请执行以下操作:

代码语言:javascript
复制
>> docker network create --driver bridge my-user-defined-bridge-net

然后做一个健全性检查,看看它连接了什么(现在不应该连接任何东西):

代码语言:javascript
复制
>> docker network inspect my-user-defined-bridge-net

在输出中向下滚动一点,直到您看到containers prop,其中列出了连接的容器。现在,它应该是空的:

代码语言:javascript
复制
"Containers": {}

接下来,在每个docker-compose文件中,将容器连接到我们刚刚创建的桥。

您的第一个文件将是:

代码语言:javascript
复制
version: '3'
  services:
    web:
      container_name: container_one
      entrypoint: ["./docker-entrypoint.sh"]
      build:
        context: .
        dockerfile: <MY FILE>
        command: bundle exec rails s -b 'ssl://0.0.0.0?key=/app/ssl/server.key&cert=/app/ssl/server.crt'
       volumes:
         - .:/app
       ports:
         - "443:3000"
       stdin_open: true
       tty: true
       networks:
         - ekoma

networks:
  ekoma:
    external:
      name: my-user-defined-bridge-net

你的第二个文件是:

代码语言:javascript
复制
version: '3'
  services:
    wordpress:
      container_name: container_two
      image: wordpress:latest
      ports:
        - 8888:80
      networks:
        - app_ekoma

networks:
  app_ekoma:
    external:
      name: my-user-defined-bridge-net

使用这些新的docker-compose文件重新启动两个容器,并检查桥的状态:

代码语言:javascript
复制
>> docker network inspect my-user-defined-bridge-net

"Containers"属性现在应该显示

代码语言:javascript
复制
"Containers": {
            "asdfasdfasdfasdfasdfasdfasdfasdfasdf1324654a1sd65fa56sdf": {
                "Name": "container_one",
                "EndpointID": "51asdf5sd651as65d1f1a65sdf1a63sd5f1asd65fa56sdf56asd6f5a65s1df",
                "MacAddress": "02:42:ac:1d:00:02",
                "IPv4Address": "172.29.0.2/16",
                "IPv6Address": ""
            },
            "a6s51dfa65sd1fas6d5f1a6s5df0asd65f0a6sd5f41asd658f4sdf": {
                "Name": "container_two",
                "EndpointID": "6a5sdfa65sd1fa6s5df1as6d51fas6d51fa6s5d1f6a5sd16sd6a1s",
                "MacAddress": "02:42:ac:1d:00:03",
                "IPv4Address": "172.29.0.3/16",
                "IPv6Address": ""
            }
        },
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54406756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档