Я использую это руководство по созданию голосового комплекта с помощью Amazon Lex и Raspberry Pi, но мне нужно использовать Docker. Проблема в том, что скрипт, который закручивает и запускает руководство, требует доступа к /dev/tty. Я могу предоставить доступ к /dev/tty при запуске docker-контейнеров, но я не знаю, как это сделать при создании контейнеров.
Мой Dockerfile выглядит так:
FROM resin/rpi-raspbian
WORKDIR /app
ADD . /app
#The script requires these
RUN apt-get update
RUN apt-get install iputils-ping
#The script has to be run with sudo priviliges but not as root
USER root
ADD /sudoers.txt /etc/sudoers
RUN chmod 440 /etc/sudoers
RUN useradd -ms /bin/bash lex
RUN echo 'lex:test' | chpasswd
RUN curl https://get.pimoroni.com/phatdac | bash
USER lex
EXPOSE 80
#Comment the last RUN command and uncomment this
#CMD curl https://get.pimoroni.com/phatdac | bash
И когда я пытаюсь создать контейнер с помощью
docker build -t raspi1 .
он вылетает из скрипта, потому что не может получить доступ к /dev/tty.
При запуске контейнера я могу использовать этот скрипт для предоставления доступа к /dev/tty и /dev/snd.
#!/bin/sh
docker run -ti --rm \
-v /dev/snd:/dev/snd \
--privileged \
raspi7
а затем попробуйте использовать скрипт при запуске с помощью CMD в Dockerfile. Но если я это сделаю, то мне нужно будет использовать скрипт каждый раз при запуске, и мне также нужно будет выполнять RUN для других вещей после завершения скрипта, что было бы неплохо иметь в Dockerfile при сборке.
TLDR; Как предоставить привилегии /dev/tty и /dev/snd при создании образа докера?
user ROOT
бесполезна, так как по умолчанию вы root, если только вы не сделаетеUSER xxx
то, что сделаете позже - person user2915097   schedule 04.01.2018