私が直面している問題は、引数を持つコマンドをdocker run
に渡す方法です。問題は、docker run
がコマンド+引数を単一の文字列として受け取らないということです。しかし、変数の値としてコマンドと引数を考慮引数を持つコマンドをドッカーに渡す文字列として渡す
#!/bin/bash
docker run --rm -it myImage bash -c "(cd build && make)"
:彼らは、次のような、docker run
に個々のファーストクラスの引数として提供される必要が
#!/bin/bash -x
DOCKER_COMMAND='bash -c "(cd build && make)"'
docker run --rm -it myImage "$DOCKER_COMMAND"
残念ながら、これは動作しません。
+ docker run --rm -it myImage 'bash -c "(cd build && make)"'
docker: Error response from daemon: oci runtime error: exec: "bash -c \"(cd build && make)\"": stat bash -c "(cd build && make)": no such file or directory.
わずかな変化、DOCKER_COMMAND
の引用を取り除く:docker run
は、置換を理解していないので。中
#!/bin/bash -x
DOCKER_COMMAND='bash -c "(cd build && make)"'
docker run --rm -it myImage $DOCKER_COMMAND
結果:
+ docker run --rm -it myImage 'bash -c "(cd build && make)"'
build: -c: line 0: unexpected EOF while looking for matching `"'
build: -c: line 1: syntax error: unexpected end of file
それは、スクリプト内のdocker run
に個別のコマンドと引数として渡されるようにどのように私は変数から文字列を拡張することができますか?
質問を最小限に抑える必要があります。 (例:ドッカーが関与することが重要な理由)私にとっては、「環境変数を使用してスクリプトにパラメータを解析するにはどうすればよいですか?" –
@MichaWiedenmannあなたのコメントをありがとうございます。実際には、Dockerが引数を受け入れる方法と、環境変数からこれらを抽出する方法があります。通常、ほとんどのコマンドは引用符付きの文字列から構築できますが、 – meowsqueak
@MichaWiedenmann ok、かなり簡略化しました。 – meowsqueak