Dockerfile, как установить snap, snapd: неизвестный сервис - PullRequest
0 голосов
/ 15 октября 2019

Hy,

Что ж, у меня возникла проблема с моим Dockerfile, фактически я пытаюсь установить snapd на Debian и Ubuntu почти во всех версиях.

, когда я пытаюсь запустить команду iполучил эту ошибку

"ошибка: не может связаться с сервером: сообщение http://localhost/v2/snaps/rocketchat-server: набрать unix /run/snapd.socket: подключиться: нет такого файла или каталога"

Итак, я попыталсячтобы увидеть, включена ли служба, и нет ли службы, называемой snapd, даже если я пытаюсь начать с systemctl «systemctl start snapd», у меня появляется ошибка «Не удалось подключиться к шине: такой файл или каталог отсутствует», поэтому я установилdbus, и при повторной попытке теперь у меня появляется эта ошибка

"Не удалось запустить snapd.service: Помощник по запуску завершился с неизвестным кодом возврата 1"

Я попытался запустить службу с помощью службы илиjournalctl, и он показывает «snapd: неопознанная служба»

, когда я перечисляю все мои службы, у меня есть это »[-] apparmor

[-] bootmisc.sh

[-] checkfs.sh

[-] checkroot-bootclean.sh

[-] checkroot.sh

[+] dbus

[-] hostname.sh

[? ] hwclock.sh

[-] killprocs

[-] mountall-bootclean.sh

[-] mountall.sh

[-] mountdevsubfs.sh

[-] mountkernfs.sh

[-] mountnfs-bootclean.sh

[-] mountnfs.sh

[? ] ondemand

[-] procps

[-] rc.local

[-] sendigs

[+] udev

[-] umountfs

[-] umountnfs.sh

[-] umountroot

[-] urandom

"

FROM ubuntu:16.04

RUN apt-get update && apt-get -y upgrade &&\
    apt-get install -y snap snapd

RUN snap install rocketchat-server
#"error: cannot communicate with server: Post #http://localhost/v2/snaps/rocketchat-server: dial unix #/run/snapd.socket: connect: no such file or directory"

RUN snap --version
#snap    2.40
#snapd   unavailable
#series  -

EXPOSE 3000

ENTRYPOINT Server is running .... && tail -f /dev/null

Я знаю, что с докером играть с сервисом нехорошо, но я не знаю, как я могу улучшить свой докер-файл, я начинаю с rocketchat doc debian, потом ubuntu, потом snap (потому что это проще), и все они у меня естьошибка.

1 Ответ

0 голосов
/ 21 октября 2019

Прежде всего, вы не хотите устанавливать пакет «snap», так как он не связан с «snapd». Во-вторых, я сам наткнулся на эту проблему установки snapd в контейнере Docker: TLDR;Запуск Snapd таким способом в настоящее время не поддерживается.

Но этот вопрос уже задавался на форумах Snapcraft. Одной из зависимостей Snapd является systemd, и служба Snapd не инициализируется должным образом без перезагрузки или повторного запуска. Это обязательная процедура согласно документации во всех дистрибутивах, но она явно не подходит для докера.

По крайней мере, этот открытый вопрос больше всего повторяет ваш вопрос: неспособен к установке-snapcraft-snap-in-docker-image-ubuntu-19-10

И Эван на форуме Snapcraft здесь опубликовал подход, который я тоже не мог заставить работать.

Единственный подход, который может сработать, аналогичен запуску Docker внутри Docker, а именно:

  • install snapd на хосте докера
  • монтирование сокета snapd ввремя выполнения в контейнере, в котором была установлена ​​оснастка.

Но те же самые предупреждения / побочные эффекты применяются так же, как и при запуске docker-in-docker .

...