(venv) ec-server@ecserver:/home/share/yahoo_price_search$ sudo /home/share/yahoo_price_search/venv/bin/python /home/share/yahoo_price_search/docker_utils.py Traceback (most recent call last): File “/home/share/yahoo_price_search/venv/lib/python3.8/site-packages/docker/api/client.py”, line 265, in _raise_for_status response.raise_for_status() File “/home/share/yahoo_price_search/venv/lib/python3.8/site-packages/requests/models.py”, line 1021, in raise_for_status raise HTTPError(http_error_msg, response=self) requests.exceptions.HTTPError: 409 Client Error: Conflict for url: http+docker://localhost/v1.44/containers/794051acf1b407ff62a055292f01e5a34b040524fadba0e66f697cea7a88c1ba/exec The above exception was the direct cause of the following exception: Traceback (most recent call last): File “/home/share/yahoo_price_search/docker_utils.py”, line 14, in <module> response = container.exec_run(exec_command) File “/home/share/yahoo_price_search/venv/lib/python3.8/site-packages/docker/models/containers.py”, line 205, in exec_run resp = self.client.api.exec_create( File “/home/share/yahoo_price_search/venv/lib/python3.8/site-packages/docker/utils/decorators.py”, line 19, in wrapped return f(self, resource_id, *args, **kwargs) File “/home/share/yahoo_price_search/venv/lib/python3.8/site-packages/docker/api/exec_api.py”, line 79, in exec_create return self._result(res, True) File “/home/share/yahoo_price_search/venv/lib/python3.8/site-packages/docker/api/client.py”, line 271, in _result self._raise_for_status(response) File “/home/share/yahoo_price_search/venv/lib/python3.8/site-packages/docker/api/client.py”, line 267, in _raise_for_status raise create_api_error_from_http_exception(e) from e File “/home/share/yahoo_price_search/venv/lib/python3.8/site-packages/docker/errors.py”, line 39, in create_api_error_from_http_exception raise cls(e, response=response, explanation=explanation) from e docker.errors.APIError: 409 Client Error for http+docker://localhost/v1.44/containers/794051acf1b407ff62a055292f01e5a34b040524fadba0e66f697cea7a88c1ba/exec: Conflict (“container 794051acf1b407ff62a055292f01e5a34b040524fadba0e66f697cea7a88c1ba is not running”)

このエラーは、コンテナが実行されていない状態で exec_run メソッドを呼び出そうとしていることを示しています。つまり、コンテナが停止しているか、またはまだ開始されていない状態です。

この問題を解決するためには、まずコンテナを実行する必要があります。以下の手順でコンテナを実行し、その後に exec_run メソッドを使用してコマンドを実行してください。

  1. Dockerコンテナを起動します。
  2. 起動したコンテナのIDを確認します。
  3. exec_run メソッドを使用して、指定したコマンドを実行します。

以下は、コンテナを起動し、その後に exec_run メソッドを使用してコマンドを実行するPythonスクリプトの例です。

python
import docker # Dockerクライアントを初期化 client = docker.from_env() # コンテナを起動 container = client.containers.run("ubuntu", detach=True) # コンテナのIDを取得 container_id = container.id # 実行するコマンドを指定 exec_command = "ls" # コマンドを実行 response = container.exec_run(exec_command) # 結果を表示 print(response.output.decode())

このスクリプトを実行すると、起動したコンテナで ls コマンドが実行され、その結果が表示されます。

未分類

Posted by ぼっち