Thursday, November 18, 2021

[SOLVED] Dockerfile, how install snap, snapd: unrecognized service

Issue

well I got some problem with my Dockerfile, in fact I try to install snapd on Debian and Ubuntu in almost all version.

When I try to launch a command I got this error

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

So I tried to see if the service is enabled, and there is no service called snapd, even if I try to start with systemctl systemctl start snapd, I have an error

Failed to connect to bus: No such file or directory

so I installed dbus, and when I try again now I have this error

Failed to start snapd.service: Launch helper exited with unknown return code 1

I tried to start the service with service or journalctl and it shows

snapd: unrecognized service

When I list all my services I have this

 [ - ]  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

 [ - ]  sendsigs

 [ + ]  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

I know that with docker playing with service is not good but I don't know how can I improve my Dockerfile, I begin with rocketchat doc debian, then ubuntu, then snap (because its easier), and with all of them I got this error.


Solution

first of all, you don't want to install the "snap" package, as it is not related to "snapd". Secondly, myself stumbled across this issue of installing snapd within a docker container: TLDR; Running snapd that way is currently not supported.

But that question has been asked already at the snapcraft forums. One of snapd's dependencies is systemd and the snapd-service isn't properly initialized without a reboot or relogin. That is the required procedure according to the documentation across all distributions, but obviously isn't an option within docker.

At least this open question replicates your question most: unable-to-install-snapcraft-snap-in-docker-image-ubuntu-19-10

And Evan at the snapcraft forum here posted an approach, that I couldn't get to work either.

The only approach that might work is similar to running docker inside of docker, i.e.:

  • install snapd on the docker host
  • mount the snapd-socket at runtime into the container that has snapd installed.

But same warnings/side-effects apply as they do to running docker-in-docker.



Answered By - nicht-vergessen