当前位置: 首页 > 知识库问答 >
问题:

docker-compose不能使用私有IP

赵鸿畴
2023-03-14

我试图在Docker-Compose中运行2个容器。我的docker-compose.yml是:

version: '2'
services:

  consul:
    image: "consul:0.8.3"
    hostname: "consul"
    command: "agent -server -client=0.0.0.0 -retry-join=10.30.1.97 -retry-join=10.30.1.42 -bootstrap-expect=3 -ui"
    ports:
      - "8400:8400"
      - "8500:8500"
      - "8300:8300"
      - "8600:53/udp"
  vault:
    depends_on:
      - consul
    image: "vault"
    hostname: "vault"
    links:
      - "consul:consul"
    environment:
      VAULT_ADDR: http://127.0.0.1:8200
    ports:
      - "8200:8200"
    volumes:
      - ./tools/wait-for-it.sh:/wait-for-it.sh
      - ./config/vault:/config
      - ./config/vault/policies:/policies
    entrypoint: /wait-for-it.sh -t 20 -h consul -p 8500 -s -- vault server -config=/config/with-consul.hcl

我一开始就发现的问题是,Consult容器使用的不是IP 10.30.1.134(主机的IP),而是我认为它使用的是网桥网络:

2017/07/10 10:09:12 [INFO] raft: Node at 172.18.0.2:8300 [Follower] entering Follower state (Leader: "")

我如何强制它使用10.30.1.134?

eth0链路Encap:Ethernet HWaddr 06:F5:74:4C:AD:9E
inet ADDR:10.30.1.134 BCAST:10.30.1.255掩码:255.255.255.0 inet6 ADDR:FE80::4F5:74FF:FE4C:AD9E/64作用域:连接广播运行多播MTU:9001度量:1 RX数据包:9907809错误:0丢弃:0溢出:0帧:0 TX数据包:17142864错误:0丢弃:0溢出:0载波:0冲突:0 TX队列:1000 RX字节:1328463684(1.3GB)TX字节:2178517759(2.1GB)

共有1个答案

师腾
2023-03-14

Docker compose默认情况下在Docker环境中创建自己网络。因此,回答您的问题--要使用主机网络,您应该使用:

network_mode: "host"

如下所述:https://docs.docker.com/compose/compose-file/compose-file-v2/

但这很少是你真正需要的东西。您定义的端口映射已经在主机和容器之间创建端口转发。例如。HOST_MACHINE_IP:8200将转发到存储库容器。通过这种方式,您可以决定具体公开哪些端口。

 类似资料:
  • 问题内容: 我正在使用docker-compose命令运行多个容器。问题是我的docker- compose必须从公共存储库中提取一些图像,并从私有存储库中提取一些图像。我打算做的是将所有必需的映像推送到私有存储库,但是如何使docker- compose从私有存储库中提取映像。 简而言之->当图像仅在那里可用时,如何指向私有存储库 问题答案: 使用命令。(官方文件) 输入您的凭据,然后,只有拥有

  • 我一直在使用docker撰写文件来运行在生产中部署到kubernetes的微服务架构的开发环境,因此我使用将k8s提供的域名映射到撰写服务名称。例如 使用时一切正常。但是当使用新的(注意没有连字符)时,容器无法相互粉碎。Kafka连接失败。HTTP请求失败。 docker cli版本的compose与旧的命令之间是否有任何更改。没有hypen,我看不到docker compose的版本,但有了它,

  • 我在docker-compose.yml中使用,但老实说,这似乎没有什么不同。不是在一篇文章中抛出一堆问题,但无论发生了什么,这是否也是我只能在使用Docker Compose运行web服务器时才能在浏览器中访问web服务器的原因?

  • 经过前文对Docker Compose的讲解,我们以Spring Cloud章节的几个示例项目为例,讲解如何使用Docker Compose部署项目: 准备工作 使用到的示例项目有: 项目名称 作用 microservice-api-gateway API Gateway microservice-consumer-movie-ribbon-with-hystrix 服务消费者 microserv

  • 问题内容: 我试图从两个不同的项目注册表(gitlab容器注册表)中提取两个图像。所有这些都在一个文件中。 如何正确配置我的图像或配置变量(无论如何工作),以正确提取我的图像而不会出现任何访问​​问题? 我找到了与 部署令牌 一起使用的解决方案,该解决方案对我的项目注册表具有只读访问权限。问题是,如果我只有一个图像要拉出,那将起作用:如何使用gitlabci构建,推入和拉出多个Docker容器?

  • 我目前正在使用https://medium.com/@sunnykay/docker-开发-工作流-节点-快递-蒙戈-4bb3b1f7eb1e尝试这个教程 第一部分在构建< code>docker-compose.yml的地方运行良好,在本地构建完全运行良好,因此我尝试标记它,并将其推入我的< code>dockerhub以了解和尝试更多内容。 这最初是文件中的内容,然后是教程 当我使用< cod