docker compose获取docker的ID

docker compose获取docker的ID,docker,docker-compose,Docker,Docker Compose,我正在使用docker compose和docker-compose.yml文件 有没有办法进入另一个docker的ID(与docker compose.yml位于同一个docker compose中)的.yml docker-compose.yml: containerA: command: python -u catch_sig.py volumes: - /workspace:/app containerB: command: echo -e "POST /cont

我正在使用docker compose和docker-compose.yml文件

有没有办法进入另一个docker的ID(与docker compose.yml位于同一个docker compose中)的.yml

docker-compose.yml:

containerA:
  command: python -u catch_sig.py 
  volumes: 
    - /workspace:/app
containerB:
  command: echo -e "POST /containers/containerA/kill?signal=SIGUSR1 HTTP/1.0\r\n" | nc -U /tmp/docker.sock

不确定.yml文件,但如果链接容器,则可以从
/etc/hosts
中获取ID,如中所述。这可能会有所帮助。

您可以将Docker客户端添加到containerB,然后将Docker_主机环境设置为基础主机(请确保配置其设置,以便它在网络上接受TCP连接)。然后,您可以使用容器名称执行
docker inspect containerA
,以识别您正在查询的主机


这将为您提供containerA的容器id。

对于较新的docker compose版本(我有1.8.0),您可以这样做

$ docker-compose ps -q
它将只显示id。 请参阅用法

 $ docker-compose ps --help
 List containers.

 Usage: ps [options] [SERVICE...]

 Options:
   -q    Only display IDs

您可以通过以下方式获取容器的ID:

docker-compose ps -q [container-name]

要获取所有Ids容器,请执行以下操作:

docker-compose ps -q
如果您需要获得一个Id:

docker-compose ps -q some_name_container_in_yml_file

你打算用这个ID做什么?它将被用来发送自动信号。不,谢谢,这不是我所期望的。更准确地说,我希望传入命令(在docker compose.yml中),这是我正在同一文件中构建的另一个容器的ID。那么,有没有一种方法可以设置容器ID,或者使用同一docker compose中描述的容器名称获取容器ID呢。yml文件?看起来您可以给容器一个名称和ID,它们可以互换使用。因此,您可以通过ENV变量将一个容器ID的名称传递给第二个容器。它有帮助吗?我将向您展示我的docker compose文件,这将更容易。根据以下讨论:,docker容器的显式名称不受支持,但将得到支持。现在容器被构建为:\ n,所以如果运行它的文件夹名为lol,并且运行单个实例,那么它将是:
lol\u containerA\u 1
。看来这就是我能帮你的全部。难道没有办法显示姓名和他们的ID吗?@Sankalp你可以使用这个命令:
docker compose ps--services | awk'{print“echo-n \”“$1”:\“docker compose ps-q”$1}bash
。我在这里描述了细节: