Возможно, вам будет проще написать это, если вы напишите его как отдельный скрипт:
#!/bin/sh
container="$1"
id=$(docker ps -aq -f name="$container")
if [ -n "$id" ]; then
...
fi
...
Запустите его вручную в целевой системе, чтобы убедиться, что он делает то, что вам нужно.
Получив это, вы можете скопировать сценарий и запустить его двумя отдельными командами:
echo "Deploying $1 to remote"
scp -i ../keys/key.pem launch-container.sh "username@$2:/tmp/launch-container.sh"
ssh -i ../keys/key.pem "username@$2" sh /tmp/launch-container.sh "$1"
Вы также можете взглянуть на различные инструменты автоматизации системы, специально предназначенные для такого рода задач.Я не согласен с Ansible за то, что он не требует выделенного сервера и работает над ssh так же, как вы показываете; имеет набор связанных с Docker команд , которые могут выполнять этот набор задач довольно напрямую.