Я создаю образ Докер на основе httpd.
Я устанавливаю в него Программное обеспечение CUPS и пытаюсь добавить в него принтер.
После установки CUPS в образ докера с помощью команды БЕГАТЬ - RUN ["apt", "install", "-y", "cups"], на следующем шаге я пытаюсь выполнить перезапустить службу чашек, а затем добавить принтер с помощью команды lpadmin.
service cups start
lpadmin -p printer_name -E -v url -m everywhere
Но это работает только тогда, когда я помещаю оба этих запуска службы и добавляю команды принтера в одну команду RUN, используя символ && между ними следующим образом:
RUN ["service cups start", "&&", "lpadmin -p printer_name -E -v url -m everywhere"]
Если я поставлю их по отдельности следующим образом:
RUN ["service cups start"]
RUN ["lpadmin -p printer_name -E -v url -m everywhere"]
это дает мне следующую ошибку:
lpadmin: Unable to connect to server: Bad file descriptor
Вот моя часть содержимого Dockerfile:
USER root
RUN ["apt", "update"]
RUN ["apt", "install", "-y", "cups"]
RUN ["systemctl", "enable", "cups"]
RUN ["service", "cups", "start", "&&", "./printerslist.sh"]
RUN ["chmod", "-R", "-f", "777", "/var/run"]
ENTRYPOINT ["service", "cups", "restart"]
Вы не можете запускать фоновые процессы в Dockerfiles. Как правило, такие команды, как service, вообще не работают в Docker. Если вам нужен демон печати, работающий где-то, возможно, лучшая модель - запускать его в отдельном контейнере (или еще лучше на хосте, если принтер физически подключен).
Эта проблема была решена. Но у меня появился новый выпуск. Контейнер докера застрял в ENTRYPOINT, который является service cups start. Пытаюсь развернуть контейнер в OCP. и журнал контейнера застревает на Starting Common Unix Printing System: cupsd. Есть идеи, как это решить?





Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что он не имеет ничего общего с программированием и должен быть завершен на superuser.com/questions/tagged/linux# или serverfault.com/questions/tagged/linux