2017-12-19 8 views
0

からドッキングウィンドウコンテナ:でのpythonの画像からコンテナを起動するを実行し、私は「ポート」に、この(作業)シェルコマンドしようとしていますのpython

IMAGE_NAME="myimage" 
CONTAINER_NAME="myname" 
docker run -d --name $CONTAINER_NAME $IMAGE_NAME tail -f /dev/null 

を:

import subprocess 
IMAGE_NAME="myimage" 
CONTAINER_NAME="myname" 
subprocess.check_output(['docker', 'run',"-d","--name %s" % CONTAINER_NAME,"%s" % IMAGE_NAME]) 

が、もし失敗する:

unknown flag: --name myname 
See 'docker run --help'. 

お勧めはありますか?

+0

'docker run --help'でしたか? –

+0

いいえ、私の問題は、Pythonでコマンドライン引数/オプションをどのように組み合わせるかの理解が不足していることです – u123

答えて

2

引数にスペースを入れる場所はすべて、リスト内の別の要素にする必要があります。 "--name myname"は単一のフラグだと考えています。あなたがしたい場合

https://github.com/docker/docker-pyなど、

subprocess.check_output(['docker', 'run', '-d', '--name', CONTAINER_NAME, IMAGE_NAME]) 
2

ドッカーは、あなたがそれらのメソッドを呼び出して、プログラム的な方法でコンテナを扱うことができますので、ドッカーのAPIを露出してPythonライブラリを持っている:あなたがしようとした持っていますサブプロセスの方法に固執するには、各引数をリストの別の要素に入れて、check_output()に渡す必要があります。引数はスイッチの値であるかどうかにかかわらず、空白で区切られていることに注意してください。--name nameのように、それらは引き続き2つの引数です。もちろん、引数が引用符でグループ化されているとします。 --name "a name"の場合、a name部分全体がサブプロセス呼び出しの単一の要素になります。

関連する問題