如何使用docker-compose在容器中运行docker命令?我只想得到其他网络容器的IP。
我正在运行三个容器va-server、db和api-server。所有的容器都在同一个docker-network中
在这里,我提供下面的docker-compose文件:
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')
发布于 2022-11-30 12:07:26
...inside一个容器..。我想要其他网络容器的IP ..。
Docker提供内部DNS服务,可以将容器名称解析为其Docker-内部IP地址。从您显示的一个容器中,您可以查找像db这样的主机名来获取容器的IP地址;但实际上,这是一个完全正常的DNS名称,除了最低级别的网络接口之外,所有的网络接口都可以直接使用这些名称。
这就要求所有涉及的集装箱都在同一个码头网络上。通常,Compose会自动为您设置;在您显示的文件中,我可能会以简单的名义删除networks:块和container_name:重写。还请参阅Docker文档中的网络写作。
简言之:
va-server、db和api-server作为主机名,而无需具体知道它们的IP地址。通常不能从容器内部运行docker命令。在不让容器接管整个主机的情况下,您不能安全地做到这一点。通常有更好的模式不会将您具体地绑定到Docker堆栈。
https://stackoverflow.com/questions/74627087
复制相似问题