docker exec не работает в контейнерах docker-compose

Я запускаю два контейнера докеров, используя 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

Когда я пытаюсь использовать:

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 в какой-то степени работает. Это откроет оболочку. Однако тома, отображаемые в томах, недоступны для этой оболочки, и файлы, которые я вижу, находятся в реальном, естественном каталоге, а не в том, что должно быть отображено в томе.

$ 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 exec, который не видит тома.


person Walt Howard    schedule 22.02.2016    source источник


Ответы (2)


Ошибка возникает из-за того, что контейнер не находит /bin/bash, поэтому возникает ошибка no such file or directory. Хотя docker exec работает нормально.

Попробуйте с /bin/sh.

person Auzias    schedule 22.02.2016
comment
/bin/sh также не работает. Я не думаю, что это все. Если я добавлю /d1/apps/qaf в естественную файловую систему хоста, команда сработает. Он находит /bin/bash и/или /bin/sh. Похоже, это как-то связано с тем, что ни один из томов не работает для docker exec. - person Walt Howard; 22.02.2016
comment
У меня пока работает sshd в качестве обходного пути, но это отстой. Мне придется жить с этим, если я не решу настоящую проблему. - person Walt Howard; 22.02.2016
comment
Что делает docker exec <..> ls? - person Auzias; 23.02.2016

Ну, я установил docker-compose и т. Д. На другую машину, и этой проблемы не было. Иди разберись. Это всего лишь одна из тех вещей, которые у меня нет времени отслеживать.

person Walt Howard    schedule 23.02.2016