(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/ae821320fd893575d7fd38552278a79e62c80de5d3da68ad504b9989749c8299/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 16, 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/ae821320fd893575d7fd38552278a79e62c80de5d3da68ad504b9989749c8299/exec: Conflict (“container ae821320fd893575d7fd38552278a79e62c80de5d3da68ad504b9989749c8299 is not running”)

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

コンテナを起動した後に exec_run メソッドを使用してコマンドを実行する必要があります。以下のステップを確認してください:

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

このエラーを解決するためには、まずコンテナを起動してからコマンドを実行する必要があります。以下は修正されたスクリプトの例です:

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 ぼっち