Я мог бы воспроизвести проблему, запустив это в системе MacOS:
Сначала откройте оболочку в контейнере, в котором уже установлена docker-compose:
docker run --rm -v $(pwd):/work -v /var/run/docker.sock:/var/run/docker.sock --workdir /work -ti tmaier/docker-compose sh
Я сопоставляю текущую папку, чтобы я мог работать с моим текущим проектом, как если бы он был на моем хосте.
А затем внутри контейнера:
docker-compose run testing-wiremock ls -lart
Теперь измените docker-compose.yml на следующее:
version: '2.3'
services:
testing-wiremock:
image: rodolpheche/wiremock
volumes:
- /tmp:/home/wiremock/
и запустите снова:
docker-compose run testing-wiremock ls -lart
Это покажет вам содержимое каталога / tmp на хосте (где фактически работает сокет докера). Для тестирования вы даже можете создать папку и файл в / tmp и снова запустить «docker-compose run». Вы увидите новые файлы.
Мораль истории:
Если смонтированная папка соответствует существующей папке на хосте, на котором фактически запущен демон докера, сопоставление будет фактически работать.
хост -> контейнер -> контейнер (здесь монтируются ссылки на пути на хосте)
В вашем конкретном случае папка монтируется пустой, потому что смонтированный путь (проверьте ее, запустив docker-compose config
) отсутствует на хосте (хост = хост, на котором работает ваш контейнер Jenkins, а не сам контейнер Jenkins).