2016-02-26 3 views
3

Я запускаю Docker (1.10.2) на Windows. Я создал сценарий для эхо «Hello World» на моей машине и сохранил его в C:/Users/username/MountTest. Я создал новый контейнер и установил этот каталог (MountTest) в качестве объема данных. Команда, которую я пытался сделать так, как показано ниже:Докер: невозможно запустить сценарий оболочки, сохраненный в установленном томе

docker run -t -i --name mounttest -v /c/Users/sarin/MountTest:/home ubuntu /bin/bash 

Далее я выполнить команду для выполнения сценария внутри контейнера mounttest.

docker exec -it mounttest sh /home/helloworld.sh 

Результат выглядит следующим образом:

: not foundworld.sh: 2: /home/helloworld.sh: 
Hello World 

я получаю желаемый результат (эхо Hello World), но я хочу, чтобы понять причину не найдены ошибки.

Примечание: Этот вопрос может быть похож на Run shell script on docker from shared volume, но он касается вопросов, связанных с разрешением.

Ссылка: helloworld.sh файла:

#!/bin/sh 

echo 'Hello World' 

Смонтированная информация объемы захватывается ниже. enter image description here

+0

Пожалуйста, разместите точное содержимое 'helloworld.sh' и ваш вызов. – Koder

+0

Есть ли у 'helloworld.sh' какие-либо строки конца строки в стиле окна (' \ r \ n')? – Roman

+0

@Roman Нет, это не так. – Sarin

ответ

0

Учитывая значение по умолчанию Entrypoint для имиджа «убунту» является sh -c, последняя команда выполняется на docker exec является:

sh -c 'sh /home/helloworld.sh' 

Это выглядит немного странно и может быть причиной сообщения об ошибке.

Попробуйте просто:

docker exec -it mounttest /home/helloworld.sh 
# or 
docker exec -it mounttest sh -c '/home/helloworld.sh' 

Конечно, docker exec должно быть сделано в SSH сессии boot2docker, simalar к сессии оболочки, в которой вы сделали docker run.
Поскольку docker run открывает bash, вы должны сделать новый сеанс boot2docker (доклер-машина ssh), а в этом новом сеансе оболочки boot2docker попробуйте docker exec.

Попытка docker exec изнутри bash, сделанная docker run означает пытаться сделать DiD (Docker in Docker). Это не относится к вашему тесту.

+0

Спасибо за ответ. Однако предложенные выше команды не решают проблему. Я получаю следующее сообщение об ошибке: «sh: 1: /home/helloworld.sh: not found» – Sarin

+0

@Sarin Просто убедитесь, что вы запускаете 'docker exec' сразу после запуска docker -t -i --name mounttest -v/c/Пользователи/sarin/MountTest:/home ubuntu/bin/bash'?Значение: вы используете 'docker exec' в сеансе bash, выполненном' docker run'? Потому что, если так, это не так, как это работает. – VonC

+0

@Sarin Я отредактировал ответ, чтобы четко указать, какую команду следует вводить где. – VonC

Смежные вопросы