1

I'm executing two docker containers using docker compose.

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

When I try to use:

docker exec -it coreqafidm_qaf_1 /bin/bash 

I get the error:

docker exec -it coreqafidm_qaf_1 /bin/bash
no such file or directory

Here is the docker-compose file:

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

Both Docker files involved have as their last WORKDIR command:

WORKDIR /d1/apps/qaf

If there is a REAL directory /d1/apps/qaf on the machine's natural file system docker exec works, to some degree. It will open up a shell. However, the mapped in volumes are not available to this shell and the files I see are the ones in the real, natural directory, not what should be the mapped in volume.

$ 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

The volumes work correctly from within the docker-compose context. I have scripts executing in their and they work. It's just docker exec that fails to see the volumes.

4

2 回答 2

1

好吧,我在另一台机器上安装了 docker-compose 等,但不存在这个问题。去搞清楚。这只是我没有时间追查的那些事情之一。

于 2016-02-23T00:19:00.507 回答
1

错误源于容器未找到/bin/bash,因此no such file or directory错误。虽然docker exec工作正常。

尝试使用/bin/sh.

于 2016-02-22T18:42:14.163 回答