首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在码头集装箱内获取集装箱-ips

在码头集装箱内获取集装箱-ips
EN

Stack Overflow用户
提问于 2022-11-30 11:31:02
回答 1查看 21关注 0票数 0

如何使用docker-compose在容器中运行docker命令?我只想得到其他网络容器的IP。

我正在运行三个容器va-serverdbapi-server。所有的容器都在同一个docker-network

在这里,我提供下面的docker-compose文件:

代码语言:javascript
复制
version: "2.3"

services:
  va-server:
    container_name: va_server
    image: nitinroxx/facesense:amd64_2022.11.28 #facesense:alpha
    runtime: nvidia
    restart: always
    mem_limit: 4G
    networks:
    - perimeter-network
  db:
    container_name: mongodb
    image: mongo:latest
    ports:
    - "27017:27017"
    restart: always
    volumes:
    - ./facesense_db:/data/db
    command: [--auth]
    networks:
    - perimeter-network
  api-server:
    container_name: api_server
    image: nitinroxx/facesense:api_amd64_2022.11.28
    ports:
    - "80:80"
    - "465:465"
    restart: always
    networks:
    - perimeter-network
  
 
networks:
  perimeter-network:
    driver: bridge
    ipam:
      config:
      - gateway: 10.16.239.1
        subnet: 10.16.239.0/24

我已经在容器中安装了docker,这给了我下面的权限错误:

docker.errors.dockerexception: error while fetching server api version: ('connection aborted.', permissionerror(13, 'permission denied')

EN

回答 1

Stack Overflow用户

发布于 2022-11-30 12:07:26

...inside一个容器..。我想要其他网络容器的IP ..。

Docker提供内部DNS服务,可以将容器名称解析为其Docker-内部IP地址。从您显示的一个容器中,您可以查找像db这样的主机名来获取容器的IP地址;但实际上,这是一个完全正常的DNS名称,除了最低级别的网络接口之外,所有的网络接口都可以直接使用这些名称。

这就要求所有涉及的集装箱都在同一个码头网络上。通常,Compose会自动为您设置;在您显示的文件中,我可能会以简单的名义删除networks:块和container_name:重写。还请参阅Docker文档中的网络写作

简言之:

  1. 您可能可以使用组合服务名称va-serverdbapi-server作为主机名,而无需具体知道它们的IP地址。
  2. 这可能意味着您根本不需要知道容器IP地址(它们通常在外部无法使用)。
  3. 如果您确实需要一个来自容器内部的IP地址,DNS查找就可以找到它。

通常不能从容器内部运行docker命令。在不让容器接管整个主机的情况下,您不能安全地做到这一点。通常有更好的模式不会将您具体地绑定到Docker堆栈。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74627087

复制
相关文章

相似问题

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