2014-12-26 3 views
0

Новое для докеров здесь. У меня есть серия команд, которые, если они загораются на оболочке, работают нормально, но если я поместил их в скрипт, не делайте этого.команда boot2docker работает на оболочке, но не в скрипте

boot2docker destroy 
boot2docker init 
boot2docker start 
boot2docker ssh & 
host=$(boot2docker ip 2> /dev/null) 
# everything works fine up to here 
ssh -i $HOME/.ssh/id_boot2docker -o "StrictHostKeyChecking no" -o "UserKnownHostsFile /dev/null" [email protected]$host docker run --net=host my-image 

Если я не пытаюсь запустить команду через ssh, все будет работать. Viz:

ssh -i $HOME/.ssh/id_boot2docker -o "StrictHostKeyChecking no" -o "UserKnownHostsFile /dev/null" [email protected]$host

Это вызовет докер SSH приглашение. Но если я выполнить команду с помощью сценария (и это то, что я на самом деле нужно делать), я получаю сообщение об ошибке:

level="fatal" msg="Post http:///var/run/docker.sock/v1.16/containers/create: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?"

Опять же, если я просто войти в эту последнюю команду или весь литию команд, в оболочку, никаких проблем. Как я могу заставить этот скрипт работать?

Благодаря

обновление Если я положил, что последняя строка в своем сценарии, и запустить два сценария в последовательности из командной строки, все в порядке (такой же, как только вы наберёте все команды в последовательности.) Если я свяжу скрипты или создаю третью, чтобы запустить их последовательно, я получаю ошибку. Что я могу сделать из этого?

Благодаря

+1

На самом деле было бы намного полезнее, если бы вместо того, чтобы опрокидывать, вы ответили на вопрос. –

ответ

0

host вероятно не определен, когда вы пытаетесь использовать его. Вероятно, вы можете подтвердить, что до echo значение его перед запуском ssh. Самым простым решением было бы объединить эти две строки в один и тот же файл:

host=$(boot2docker ip 2> /dev/null) 
ssh -i $HOME/.ssh/id_boot2docker -o "StrictHostKeyChecking no" -o "UserKnownHostsFile /dev/null" [email protected]$host docker run --net=host my-image 
Смежные вопросы