Странное поведение вызова Docker из скрипта bash - PullRequest
2 голосов
/ 26 апреля 2019

Я пытаюсь запустить Docker из скрипта bash, и Docker говорит: «Это не команда Docker» Если я печатаю командную строку docker до того, как позвоню в docker, копирую ее в буфер обмена и вставляю в командную строку, она работает хорошо!

вот команда в скрипте bash:

local args="run ${nw_param} ${opts} --name ${img} ${repository}/${img}:${tag}"
docker ${args}

текущий эхо строки аргументов:

run --net=ehvb-network -d --restart=always --name my-module my-private-registry:5000/my-module:0.0.1-1555334810

Когда я скопировал эту строку в буфер обмена и вставил ее в командную строку, она работает хорошо. Я использую Debian Stretch. Мой скрипт использует bash (#! / Bin / bash)

Когда я удаляю $ {opts}, он запускается из bash. Опц в настоящее время содержит «-d --restart = всегда». Когда я пытаюсь использовать только -d или только --restart = всегда, это работает хорошо. Но когда я пытаюсь использовать оба вместе, это не работает хорошо. И я пытаюсь определить опции следующим образом:

opts=’–restart=always -d’

сообщение от докера: docker: Ответ об ошибке от демона: недопустимая политика перезапуска 'Always -d', но сообщение печати содержит Опции: –restart = всегда -d

Кто-то удаляет --restart =

1 Ответ

0 голосов
/ 30 апреля 2019

Проблема заключалась в том, что я использовал переменные из других команд bash в моем скрипте (например, curl, ps и т. Д.). Все эти переменные заканчиваются символом возврата каретки \ r. Когда я пытаюсь вставить эти переменные в строку параметров докера \ r, внутри нее. Мне нужно добавить: | sed 's / \ r //' для всех этих команд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...