Help with docker setup
from foremanguy92_@lemmy.ml to selfhosted@lemmy.world on 07 Nov 16:31
https://lemmy.ml/post/22244288

I just start using my homelab to host some new good services, and I want to know what is the approach of a docker setup, what is the best distro for? How to deploy them correctly? Basically I’m a real noob in this subject. Thank you

#selfhosted

threaded - newest

Dust0741@lemmy.world on 07 Nov 16:35 next collapse

Anything.

Personally I use Debian. But Docker doesn’t care. I chose Debian because it is very stable and simple

foremanguy92_@lemmy.ml on 07 Nov 16:48 next collapse

And what is the good way of deploying it? After pulling the image, how do we autostart it etc…

Itwasthegoat@lemmy.world on 07 Nov 16:57 next collapse

Create a systemctl service for it, create a cron, or of there is a lot of interconnectivity between your containers look at something like K3S.

lka1988@sh.itjust.works on 07 Nov 16:58 next collapse

The Docker documentation is pretty terrible, but it’s a decent start. Start by looking at docker-compose.yml files for the services you want to run and the write-ups for those.

Something nobody ever told me, that I had to figure out myself, is that docker-compose.yml files can be placed anywhere you want.

foremanguy92_@lemmy.ml on 07 Nov 17:29 collapse

Should I make the docker compose files or pull the image from hub.docker.com?

mhzawadi@lemmy.horwood.cloud on 07 Nov 17:59 collapse

Your compose file will pull the image when you run it, from the registry it’s in

atzanteol@sh.itjust.works on 07 Nov 16:58 next collapse

At its simplest:

docker run -d --name servicename --restart unless-stopped container

That’ll get you going. Youi’ll have containers running, they restart, etc. There are more sophisticated ways of doing things (create a systemd file that starts/stops the container, use kubernetes, etc.) but if you’re just starting this will likely work fine.

foremanguy92_@lemmy.ml on 07 Nov 17:30 collapse

Are they starting automatically at boot?

EDIT : how do you run a container with a simple name instead of using his id?

atzanteol@sh.itjust.works on 07 Nov 18:08 collapse

Yes - they’ll start automatically. There are other options for “restart” that define the behavior.

You can give whatever you like to “servicename” and use that rather than the ID.

For example:

docker run -d --name mysite --restart unless-stopped nginx

docker stop mysite

docker start mysite
foremanguy92_@lemmy.ml on 07 Nov 18:11 collapse

thx

ryan_harg@discuss.tchncs.de on 09 Nov 08:03 collapse

in a docker compose file you can set the option “restart: unless-stopped”

docs.docker.com/reference/compose-file/services/#…

funkajunk@lemm.ee on 07 Nov 17:08 collapse

Yep, Debian and then add Portainer - for me this is the easiest setup to manage.

foremanguy92_@lemmy.ml on 07 Nov 17:29 collapse

would prefer to not use portainer

funkajunk@lemm.ee on 07 Nov 18:02 next collapse

I just said what works best for me. Use the command line and compose files if you want.

ikidd@lemmy.world on 08 Nov 03:39 next collapse

I can appreciate this. You might want to look at Lazydocker as a SSH TUI management tool.

Lem453@lemmy.ca on 08 Nov 11:20 collapse

I love the one click pull from git option. Don’t like the corporate direction they seem to be taking.

I haven’t seen aby alternative docker GUI managers that have the git pull for the compose.

NegativeLookBehind@lemmy.world on 07 Nov 16:39 next collapse

What do you want to do with containers? That’s sort of the driver for making architectural decisions.

foremanguy92_@lemmy.ml on 07 Nov 16:50 collapse

Network and services containers. Nextcloud, Homepage, filesharing, …

mhzawadi@lemmy.horwood.cloud on 07 Nov 18:04 next collapse

I would start with a Debian os base, install docker and turn it into a swarm manager. Then look at stacks and how services work, if you find your running your host too hard. You can add a work host and stread out.

Once you have docker swarm running, get portainer running. I use portainer as a visual whats happening on my swarm, but I use the docker cli to start and update all my stacks. I have my stacks in a git repository so that I have a backup and history of what changes I did.

Now your a docker master, of sorts.

foremanguy92_@lemmy.ml on 07 Nov 18:07 collapse

thank you a lot, im gonna dive in the subject more deeply

ikidd@lemmy.world on 08 Nov 03:43 next collapse

Debian with the docker convenience script. Stay away from Ubuntu server, for the love of dog.

Make a folder such as /stacks and put everything there by building docker compose stacks. I bind mount everything local to a subfolder with the docker-compose.yml for that application so when I restore it, it’s all in one spot, not spread all over the hell like docker likes to do if you don’t use bind mounts.

Add lazydocker for getting easy log and stats access for each stack.

Avoid bare docker run commands. It makes an unmanageable mess when you get more that a couple containers running.

Consider using the nextcloud AIO master container. It runs docker containers inside a master container compose file, and it is by far the easiest way to manage and run nextcloud.

Toribor@corndog.social on 08 Nov 03:57 next collapse

Debian + Containers is definitely the way. Literally so stable it’s boring.

sum_yung_gai@lemm.ee on 08 Nov 10:01 next collapse

What is so bad about Ubuntu server?

ikidd@lemmy.world on 08 Nov 15:06 collapse

When I tried it last (a couple years ago), the docker snap was an untroubleshootable mess. I don’t like the idea of running Docker that way, in whatever version of a container that Canonical has come up with for snaps. It’s just looking for problems. Run an application with Snap if you want, but a whole container system? No thanks.

sum_yung_gai@lemm.ee on 08 Nov 17:56 next collapse

I just don’t use snaps and it works great for me. For docker I add their apt repository and install it like that.

ikidd@lemmy.world on 08 Nov 21:59 collapse

Well, I wasn’t using snaps and it still decided to install Docker snap on me. 2 days of troubleshooting before I figured out that the snap existed and was having a war with my apt install of docker. Never again.

sum_yung_gai@lemm.ee on 08 Nov 23:04 collapse

I avoid apt because it does silly stuff. Always use apt-get. I suppose having to know that quirk is a con of the distro.

prenatal_confusion@feddit.org on 09 Nov 06:52 collapse

Oh those are not the same?! TIL. Just thought they made it more convenient.

AustralianSimon@lemmy.world on 09 Nov 00:15 collapse

I wrote a script to remove snaps and install Docker as per the docker website. Works great mate.

Plus you get the benefit of frequent updates.

ikidd@lemmy.world on 09 Nov 01:01 next collapse

I don’t need what Ubuntu offers to run server applications, and Debian is rock solid and predictable. Might as well go to the source since it’s Debian all the way down anyway, just with added cruft.

numanair@lemmy.ml on 14 Nov 00:11 collapse

One of their frequent updates completely broke docker on my system. Fortunately they did push the fix by the time I realized what happened.

AustralianSimon@lemmy.world on 14 Nov 04:51 collapse

Is that because you installed it via snaps instead of apt?

numanair@lemmy.ml on 14 Nov 11:50 collapse

It was from docker’s apt repo, so a newer version than provided through Ubuntu’s channels I assume.

AustralianSimon@lemmy.world on 14 Nov 21:14 collapse

APT install is the same for Debian as it is for Ubuntu. Ubuntu delivers docker through APT or Snap but defaults snap.

moonpiedumplings@programming.dev on 09 Nov 04:01 next collapse

Debian with the docker convenience script.

They seem to be moving away from this, and it’s not longer the first option on their install page

On their debian page

Use a convenience script. Only recommended for testing and development environments

Also, it should be noted about the first option they recommend, Docker Desktop, that Docker Desktop is proprietary.

I recommend just getting the docker.io and docker-compose from debian’s repositories.

ikidd@lemmy.world on 09 Nov 04:10 collapse

Well, that’s a new development. That used to be the go-to method they pushed. Thanks for pointing that out.

As for Docker Desktop being the top option, it would only be used for a “development environment” because why would you install that on a headless docker host for production? And after the horror stories I’ve heard of Windows and Mac versions of Docker Desktop, there isn’t a chance in hell I’d use it anyway.

So yes, going forward it looks like adding the repos and apt-get install are the way to go. Except, the convenience script was so… convenient.

moonpiedumplings@programming.dev on 09 Nov 05:44 collapse

Debian already has docker packaged. That’s more convenient.

prenatal_confusion@feddit.org on 09 Nov 06:50 collapse

With Debian not being a rolling release id think it is relevant to stay up to date with your container daemon. IMHO.

Bakkoda@sh.itjust.works on 10 Nov 13:45 collapse

I’ve become very partial to Dozzle. I roll out right into my compose scripts and it’s incredibly lightweight.

ikidd@lemmy.world on 10 Nov 16:23 collapse

I found dozzle a bit rudimentary as it only does logs, but I liked that there was an android app to interface it.

Lazydocker is more like Portainer on running stacks in that you can see logs, configs, stats and do operations on the stacks and components all from an SSH TUI.

Bakkoda@sh.itjust.works on 10 Nov 17:39 collapse

I’ll have to check it out. TIL about the app.

AustralianSimon@lemmy.world on 09 Nov 01:32 collapse

Ubuntu server is pretty user friendly and has more frequent updates op. Plenty of info out there. My preference is uninstall snaps.