В настоящее время я запускаю скрипт на python внутри контейнера докера на машине с Ubuntu.Скрипт обрабатывает ввод с последовательного устройства с помощью pyserial.Каждый раз, когда я запускаю скрипт, у меня нет реального соединения с устройством, он всегда выдает эту ошибку:
serial.serialutil.SerialException: [Errno 16] could not open port /dev/ttyACM3: [Errno 16] Device or resource busy: '/dev/ttyACM3'
Примечание: устройство не используется ни в каком другом процессе, поэтому не должно быть никаких причин длясгенерируйте эту ошибку.
while True:
try:
self.serialSource = serial.Serial(self.inputDevice)
self.serialSource.timeout = 0.5
break
except serial.serialutil.SerialException as e:
print(str(e))
time.sleep(1)
continue
Если я запускаю сценарий непосредственно на хост-компьютере, значит, он работает так, как ожидалось.Я думаю, что может быть проблема с конфигурацией докера.
Я просто использую docker-compose для подключения устройства к контейнеру следующим образом:
devices:
- "/dev/ttyACM3:/dev/ttyACM3"
информация о настройке:
- host os: ubuntu 18.04
- docker: 18.06.1-ce, сборка e68fc7a
- docker-compose: 1.22.0, сборка f46880fe
- образ докера: "python: 3.7.0"
- pyserial: 3.4
Есть идеи?