Чому я не можу записати компакт-диск у каталог із запуском docker?


39

Мені потрібно запустити додаток із певного каталогу.

$ sudo docker run -P ubuntu/decomposer 'cd /local/deploy/decomposer; ./decomposer-4-15-2014'
2014/10/09 21:30:03 exec: "cd /local/deploy/decomposer; ./decomposer-4-15-2014": stat cd /local/deploy/decomposer; ./decomposer-4-15-2014: no such file or directory

Цей каталог, безумовно, існує, і якщо я підключусь до docker, запустивши bash інтерактивно, я можу запустити вищевказану команду.

$ sudo docker run -i -t ubuntu/decomposer /bin/bash
# cd /local/deploy/decomposer; ./decomposer-4-15-2014

Я можу запустити свою програму, вказавши повний шлях, але потім вона виходить з ладу, як очікується, буде запущена з поточного каталогу. Що я можу зробити?

Відповіді:


34

Передайте свою команду як аргумент до / bin / sh так:

sudo docker run -P ubuntu/decomposer /bin/sh -c 'cd /local/deploy/decomposer; ./decomposer-4-15-2014'

docker run centos / bin / sh -c 'cd / bin; / bin / ls 'нічого не друкує, тоді як docker run centos / bin / sh -c' / bin / ls / bin 'працює.
seanmcl

Насправді обидві команди виводять список файлів у каталог / bin. Спробували обидва.
Glueon

Не в моїй коробці, centos7.
seanmcl

1
Насправді, навіть просто видалення лапок навколо моєї команди працювати добре. Я думаю, що докер все-таки завершує це /bin/sh -c.
schmmd

85

Ви можете використовувати -wопцію для зміни робочого каталогу.

docker run

  -w, --workdir=""           Working directory inside the container

Отже, у вашому випадку ви запускаєте:

sudo docker run -w /local/deploy/decomposer -P ubuntu/decomposer ./decomposer-4-15-2014

Чи можу я використовувати -wз docker exec? Я шукаю спосіб запустити скрипт python у своєму контейнері, але не можу зупинити його поза контейнером.
zx1986

ой, я отримав відповідь ....flag provided but not defined: -w
zx1986

1
Чорт, чому це все ховається внизу довідкової сторінки запуску докера ! :-)
Амір Абірі

5
Це має бути прийнята відповідь
fferri

4

Використовуйте WORKDIR у своєму Dockerfile, щоб встановити робочий каталог. Тоді ви можете запустити свою команду за допомогою EXEC.


0

Це може бути, через проблему дозволу, або екземпляр не в змозі знайти доступний шлях для виконання. Щоб перевірити цю спробу, додайте доступний доступний розташування в шляху та спробуйте запустити скрипт

щоб додати поточний каталог у шлях, будь ласка, скористайтеся командою нижче

$ export PATH=$PATH:
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.