Docker is underated


#1

Heya all,

i dont know why Docker is so underated for OctoPrint and i think we should concentrate on a better working Docker Image.

Some Advantages of Docker:

  • Multi arch support if implemented: works on any PI, any other Devices
  • Centerized user config (easy config, easy backup)
  • Fast installation cuz its preinstalled
  • also easy configuration based on pre-defined variables (like which camera to use for this container)
  • Multi OctoPrint Instances without hacking around and every Octoprint Installation is seperated
  • Other Applications available (like Pi-hole, Portainer, MQTT Broker,...)
    • userfriendly GUI with Portainer to manage Docker
    • watchtower for auto updating docker images (not recommend for OctoPrint cuz it would stop a running Print)
  • easy Version downgrade on Problems
  • easy access to dev/test/rc Versions (just change the Docker Tag)
  • and many more (clusters/swarm)

Im also not a fan of PRE-MADE Rasbian Versions like OctoPi, if u want run diffrent Apps which provide a predefined Image u cannot use them or u have to buy a second pi (energy costs running two pi for work which one pi could do).

The "official" Docker Image is really bad made and seems not to be maintaned.

I currently use this Docker Container: https://github.com/reloxx13/docker-octoprint
Forked from https://github.com/nunofgs/docker-octoprint and did some impovements of the CI auto builds.

nunofgs did a great job here and ill try to merge my CI changes to his repo.

It would nice if in the future the CI gets integrated in the OctoPrint GitHub, that way there would be auto build for dev/rc/stable Releases of OctoPrint. Currently without a connection to the OctoPrint Github it needs to run daily for master build and manual for new releases.

You guys should really try out Docker.

Here is a small QuickStart:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

sudo usermod -aG docker pi
mkdir -p /home/pi/Docker/OctoPrint

docker run -d \
--restart=unless-stopped \
--name=OctoPrint \
-p 1337:80 \
--device=/dev/ttyUSB0:/dev/ttyUSB0 \
-v /home/pi/Docker/OctoPrint/data:/data \
reloxx13/octoprint:latest

http://ipOfYourPi:1337

Status check
docker ps


#2

Since most people are using a Pi to run Octoprint, it's a pretty terrible solution, actually. I run it for dev purposes, but multi-printer from the same machine isn't the greatest of ideas. Still I'd love to have a Dockerfile in the official repo :slight_smile:


#3

because most of the users don't even know what that is, nor they care...

with one huge disadvantage - overhead
and when using a very limited resources box (limited cpu, limited ram, limited io capacity) then overhead is something you try to avoid, not introduce

99% of users unpack the img file on a sd card and voila, everything works ... no care about arch (nor most have a clue what arch their pi is), config is controled trough web interface, most can't care less where it is on the system, there's no faster installation then unpacking img on to sd card ... so none of these benefits (that are global docker benefits) make sense to octoprint+rpi users (that are vast majority of octoprint users)

most of the pi's out there are incapable of running anything else in parallel so again..

none of this is "easy" for your average octoprint user as it requires to ssh to machine and knowledge of shell ... that's "hacking" for 99.99% of users out there... the rest 0.01% that knows what you are talking about have zero issues of setting anything (including docker) themselves but they are not relevant target market.. I personally don't use rpi at all as imo opi is much better hw for similar price + opi is way easier to get where I live then rpi ... building yourself a custom armbian image and installing octoprint is walk in a park but it's not something 99% of octoprint users will care about

so you don't, noones making you, but 99% of users find that the only reason they use octopring, introduce shell and they'll move to another "plug and play" system that works for them

you can always volunteer to be a maintainer or to offer your version of it


#4

If you're a developer, it would be nice to have several packaged images (whether they're different physical microSD cards, different ISO images, different docker images). I develop for different controller boards and different TFT screens so I'm always shuffling images around.

When I go to answer a quick question here on the forum (which requires a screenshot of some Settings dialog box), I usually bring up a virtual environment here on my MacBook which only takes a few seconds. It's faster than bringing up my actual printer, to be honest.

I like the idea of Docker-ized images and I've thought about delivering these as a customer solution.

One of the scenarios for a manufacturer might look like:

  1. Grab the standard vN.NN image
  2. Mount the second EXT4 partition
  3. Edit it for a particular customer's printer (S/N, options from their profile or even their wifi information)
  4. Unmount the partition
  5. Zip up the image and then send it to them or store it in the cloud (notifying them) or burn it to microSD and put it into their printer to send out

If a Docker image makes this easier, then I'm all for it.