docker exec未在docker compose容器中工作

docker exec未在docker compose容器中工作,docker,exec,docker-compose,volumes,Docker,Exec,Docker Compose,Volumes,我正在使用docker compose执行两个docker容器 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS

我正在使用docker compose执行两个docker容器

CONTAINER ID        IMAGE               COMMAND                  CREATED                 STATUS              PORTS                                                                                                                                   NAMES
eef95ca1b59b        gogent_qaf          "/bin/sh -c ./slave.s"   14 seconds ago      Up 12 seconds       4242/tcp, 7000-7005/tcp, 9999/tcp, 0.0.0.0:30022->22/tcp                                                                                coreqafidm_qaf_1
a01373e893eb        gogent_master       "/bin/sh -c ./master."   15 seconds ago      Up 13 seconds       4242/tcp, 0.0.0.0:27000->7000/tcp, 0.0.0.0:27001->7001/tcp, 0.0.0.0:27002->7002/tcp, 0.0.0.0:27003->7003/tcp, 0.0.0.0:29999->9999/tcp   coreqafidm_master_1
当我尝试使用:

docker exec -it coreqafidm_qaf_1 /bin/bash 
我得到一个错误:

docker exec -it coreqafidm_qaf_1 /bin/bash
no such file or directory
以下是docker compose文件:

version: '2'
services:
  master:
    image: gogent_master
    volumes:
      - .:/d1/apps/qaf
      - ./../core-idm-gogent/:/d1/apps/gogent
    ports:
      - "27000-27003:7000-7003"
      - "29999:9999"
    build:
      context: .
      dockerfile: Dockerfile.master
  qaf:
    image: gogent_qaf
    ports:
      - "30022:22"
    volumes:
      - .:/d1/apps/qaf
      - ./../core-idm-gogent/:/d1/apps/gogent
    depends_on: [master]
    build:
      context: .
      dockerfile: Dockerfile.qaf
所涉及的两个Docker文件都将以下内容作为其最后一个WORKDIR命令:

WORKDIR /d1/apps/qaf
如果机器的自然文件系统上有一个真正的目录/d1/apps/qaf,docker exec在某种程度上可以工作。它会打开一个外壳。但是,映射入卷对此shell不可用,我看到的文件是真实的自然目录中的文件,而不是应该映射入卷的文件

$ mkdir /d1/apps/qaf
$ docker exec -it coreqafidm_qaf_1 /bin/bash
root@eef95ca1b59b:/d1/apps/qaf#
root@eef95ca1b59b:/d1/apps/qaf# ls /d1/apps/gogent
ls: cannot access /d1/apps/gogent: No such file or directory

这些卷在docker compose上下文中正常工作。我有脚本在他们的应用程序中执行,它们可以工作。只是docker exec未能查看卷。

该错误源于容器未找到
/bin/bash
,因此
没有此类文件或目录
错误。不过,
docker exec
工作正常


尝试使用
/bin/sh

好吧,我在另一台机器上安装了docker compose等,但这个问题并不存在。想想看。这只是我没有时间追踪的事情之一。

/bin/sh也失败了。我想不是这样的。如果我将/d1/apps/qaf添加到主机的自然文件系统中,该命令将起作用。它会找到/bin/bash和/或/bin/sh。似乎这与docker exec的所有卷都不起作用有关。我让sshd暂时作为一种解决方法,但这有点糟糕。除非我解决了真正的问题,否则我将不得不接受这一点。
docker exec ls
做什么?