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