루트로 실행하지 않고도 장치에 액세스할 수 있는 컨테이너 실행

루트로 실행하지 않고도 장치에 액세스할 수 있는 컨테이너 실행

컨테이너 를 운영하고 싶습니다 zigbee2mqtt.

기기를 컨테이너에 바인딩해야 합니다. 다음을 수행하세요.

devices:
  - "/dev/serial/by-id/usb-Texas_Instruments_\
TI_CC2531_USB_CDC___0X00124B00194AD935-if00:/dev/ttyUSB0"

다른 사용자로 시작하고 싶습니다. 예를 들면 다음과 같습니다.

user: "${DOCKER_UID}:${DOCKER_GID}"

그런데 오류가 발생하면서 멈춥니다. 액세스 권한이 올바른 것 같습니다(사용자를 지정하지 않으면 오류가 발생하지 않습니다). 오류 로그가 있습니다:

  zigbee2mqtt:info 10/27/2019, 5:18:17 PM Logging to directory: '/app/data/log/2019-10-27.17-18-17'
  zigbee2mqtt:info 10/27/2019, 5:18:18 PM Starting zigbee2mqtt version 1.6.0 (commit #e26ad2a)
  zigbee2mqtt:info 10/27/2019, 5:18:18 PM Starting zigbee-shepherd
events.js:167
      throw er; // Unhandled 'error' event
      ^

Error: Port is not open
    at SerialPort.close (/app/node_modules/zigbee-herdsman/node_modules/@serialport/stream/stream.js:425:29)
    at Znp.<anonymous> (/app/node_modules/zigbee-herdsman/dist/znp/znp.js:107:37)
    at Generator.next (<anonymous>)
    at /app/node_modules/zigbee-herdsman/dist/znp/znp.js:7:71
    at new Promise (<anonymous>)
    at __awaiter (/app/node_modules/zigbee-herdsman/dist/znp/znp.js:3:12)
    at SerialPort.serialPort.open (/app/node_modules/zigbee-herdsman/dist/znp/znp.js:103:45)
    at SerialPort._error (/app/node_modules/zigbee-herdsman/node_modules/@serialport/stream/stream.js:197:14)
    at binding.open.then.err (/app/node_modules/zigbee-herdsman/node_modules/@serialport/stream/stream.js:241:12)
Emitted 'error' event at:
    at SerialPort.onerror (_stream_readable.js:690:12)
    at SerialPort.emit (events.js:182:13)
    at SerialPort._error (/app/node_modules/zigbee-herdsman/node_modules/@serialport/stream/stream.js:199:10)
    at process.nextTick (/app/node_modules/zigbee-herdsman/node_modules/@serialport/stream/stream.js:204:31)
    at process._tickCallback (internal/process/next_tick.js:61:11)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: `node index.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

이 문제를 해결하는 옵션/가장 좋은 방법은 무엇입니까?
사용자에게 이 CC2531(Zigbee 수신기)에 대한 모든 권한을 부여하는 데 보안 문제가 발생하지 않습니다.

답변1

Docker에서 사용자 매핑을 수행하는지 여부와 방법을 기억하지 못합니다. 하지만 파일 권한만 사용하고 싶습니다. zigbee_device호스트에 새 그룹( )을 추가하고 해당 그룹의 사용자가 읽고 쓸 수 있도록 장치에 대한 권한을 설정합니다. 그런 다음 컨테이너가 이를 그룹 중 하나로 실행하도록 합니다.

관련 정보