0
私はドッカーコンテナ内にシェルスクリプトtest.sh
を持っています。このスクリプトの出力をファイルにパイプしたいと思います。 docker exec
コマンドを使用するか、シェルにログイン(docker run -it
を使用)し、./test.sh > test.txt
を実行することでこれを行うことができます。しかし、私は同じ結果がpythonのdocker sdkを使ってどのように達成できるのか知りたいです。これまでのコードです:dockerコンテナ内のシェルスクリプトの出力を、Pythonのdocker sdkを使用してファイルに取り込みます。
import docker
client = docker.APIClient(base_url='unix://var/run/docker.sock')
container= client.create_container(
'ubuntu:16.04', '/bin/bash', stdin_open=True, tty=True, working_dir='/home/psr', \
volumes=['/home/psr/data'], \
host_config=client.create_host_config(binds={
'/home/xxxx/data_generator/data/': {
'bind': '/home/psr/data',
'mode': 'rw',
},
})
)
client.start(container=container.get('Id'))
cmds= './test.sh > test.txt'
exe=client.exec_create(container=container.get('Id'), cmd= cmds,
stdout=True)
exe_start=client.exec_start(exec_id=exe, stream=True)
for val in exe_start:
print (val)
私はdocker sdkの低レベルAPIを使用しています。高レベルのAPIを使用して上記と同じ結果を得る方法が分かっている場合は、教えてください。
ベストプラクティスは、 'test.sh'が出力をstdoutに送信し、' docker log' APIを使ってそれをキャプチャすることができます。 – stacksonstacks
出力をコンテナ内またはドッカーホスト上に表示しますか? – Matt
@Mattホストとドッカーの両方のコンテナにアクセスできるマウントされたボリュームに保存されているファイルに書きたいと思います。この質問では、コンテナ内の/ home/psr/dataディレクトリを参照しています。 – Vishnu