web-dev-qa-db-ja.com

Dockerでpythonスクリプトを実行する方法は?

enter image description hereenter image description here Dockerでpythonスクリプトを実行しようとしています。さまざまな方法で試しましたが、Dockerで実行できませんでした。私のpythonスクリプトは次のとおりです。

import os

print ('hello') 

Macに既にdockerをインストールしています。しかし、私はどのように画像を作成し、それをドッカーにプッシュしてから、ドッカー自体でスクリプトをプルして実行したいのかを知りたいです。

11
Pulkit

さて、まず、Dockerイメージ用の特定のプロジェクトディレクトリを作成します。例えば:

mkdir /home/pi/Desktop/teasr/capturing

そこにdockerfileとスクリプトをコピーし、現在のコンテキストをこのディレクトリに変更します。

cp /home/pi/Desktop/teasr/capturing.py /home/pi/Desktop/teasr/dockerfile /home/pi/Desktop/teasr/capturing/

cd /home/pi/Desktop/teasr/capturing

これはベストプラクティスです。docker-engineがビルド時に最初に行うことは、現在のコンテキスト全体を読み取ることです。

次に、dockerfileを見てみましょう。次のようになります。

FROM python:latest

WORKDIR /usr/local/bin

COPY capturing.py .

CMD ["capturing.py", "-OPTIONAL_FLAG"]

次に行う必要があるのは、スマート名でビルドすることです。通常、ドットの使用は推奨されません。

docker build -t pulkit/capturing:1.0 .

次は、あなたがやったように画像を実行するだけです。

docker run -ti --name capturing pulkit/capturing:1.0

スクリプトはコンテナ内で実行され、おそらく完了時に終了します。

Edit次のエラーを作成した問題を見つけた後:

"standard_init_linux.go:195: exec user process caused "exec format error"

Raspberry Piの下(x86_64の代わりにARM)に異なるアーキテクチャがありますが、これは問題になっているかもしれませんが、そうではありませんでした。それが問題であれば、親画像をFROM armhf/pythonに切り替えるだけで十分でしょう。

ソース

しかし!エラーが発生し続けました。

したがって、この問題の解決策は、pythonスクリプトの上にSha-Bangが欠けているだけです。スクリプトの最初の行は#!/usr/bin/env pythonである必要があり、これで問題を解決できます。

ソース

15
samprog

スクリプトがあるディレクトリにdockerfileを作成する必要があります。

次のテンプレートを使用できます。

FROM python:latest

COPY scriptname.py /usr/local/share/

CMD ["scriptname.py", "-flag"]

次に、docker build -t pulkit/scriptname:1.0 .を実行するだけで、イメージが作成されます。

画像はdocker imagesの下に表示されるはずです。ローカルコンピューターで実行する場合は、docker runを使用します。

DockerHubにアップロードする場合は、docker loginでDockerHubにログインし、docker Pushで画像をアップロードする必要があります。

3
samprog