конфликт параллельного запроса к движку докера - PullRequest
0 голосов
/ 04 марта 2019

Было запущено два процесса.Все они использовали Docker Python SDK для подключения к локальному механизму докеров (18.03).Один процесс должен был бы удалить контейнер, который встретил ошибку, потому что контейнер работал.Почти в то же самое время другой процесс мог бы создать контейнер.Конфиги этих двух контейнеров не конфликтуют.Затем я получаю сообщение об ошибке, подобное этому:

Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/docker/api/client.py", line 229, in _raise_for_status
response.raise_for_status()
File "/usr/local/lib/python3.5/dist-packages/requests/models.py", line 939, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 409 Client Error: Conflict for url: http://192.168.1.120:2375/v1.35/containers/create

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "worker.py", line 205, in process_job
**job.get('other', {})
File "/usr/local/lib/python3.5/dist-packages/docker/api/container.py", line 411, in create_container
return self.create_container_from_config(config, name)
File "/usr/local/lib/python3.5/dist-packages/docker/api/container.py", line 422, in create_container_from_config
return self._result(res, True)
File "/usr/local/lib/python3.5/dist-packages/docker/api/client.py", line 235, in _result
self._raise_for_status(response)
File "/usr/local/lib/python3.5/dist-packages/docker/api/client.py", line 231, in _raise_for_status
raise create_api_error_from_http_exception(e)
File "/usr/local/lib/python3.5/dist-packages/docker/errors.py", line 31, in create_api_error_from_http_exception
raise cls(e, response=response, explanation=explanation)
docker.errors.APIError: 409 Client Error: Conflict ("You cannot remove a running container 9c31e308532433a712e9e56792726678ca78ff32e7de116097d27c243ed018a0. Stop the container before attempting removal or force remove")

работающий контейнер не может быть удален, тогда возникает ошибка в норме.Проблема в том, что это влияет на создание другого контейнера одновременно.Это случалось 2-3 раза.Похоже, механизм докера или сервер API не поддерживает параллелизм, не так ли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...