Good short read.
Except it's wrong: docker isn't werid for those reasons, it's crap for those reasons.
Good short read.
Except it's wrong: docker isn't werid for those reasons, it's crap for those reasons.
If you’re using docker compose, it will create a default bridge network with a CIDR that could overlap with a real network routable to the host, which messes up network egress from the container.
If this is the case it’s useful to specify the bridge network CIDR in the compose file as something you don’t use.
Tbh, I don't know what Incus or LXD are. If I'm using either of those, it's news to me. I'll look into it though, thanks.
My host is connected via Ethernet cable already.
To my knowledge no. The only networking related changes I made was using the netplan config to make my host IP static.
I disabled ufw, and I cleared ipstables and let Docker choose its own rules. I think.
Ubuntu is the host machine, yes.
Silly question, but is Ubuntu the host machine, or is it WSL or anything like that?
Is your firewall preventing outbound requests from random ports on ur computer?
Are you using wireguard or any other complex networking? If so you may need to reduce Docker's MTU
It might be your network. See this post on the docker forums. Try using another WiFi network or your phone's hotspot for testing. If possible, and you're on a server, try using the LAN cable.
Could it be this?
Incus is a fork of LXD, so if you are usimg LXD the same issues apply.
I’m confused too. I’m not sure what it’s offering. But I have the container running now and can access it from the browser.
I’m on macOS (will be migrating back to Linux in the future) and had to install something called Colima too, via brew, to allow docker itself to run. But it’s a service and once it’s started, it starts at login. So, I can forget about it and focus on docker. I’m very happy.
My Pi3B is struggling to run the services I have on it so I couldn’t add another container there. Thanks again, I can finally organise information better and hopefully contribute to better online discourse hopefully!
Yeh, I don't quite understand docker desktop.
I guess it's handy for seeing running containers, volumes images etc.
But I don't get what it offers over CLI, or a TUI like lazy-docker.
You might be thinking of something like portainer, which does let you use compose files via its web gui.
Glad you've figured out the docker compose route. I find config files (and scripts) significantly easier to work with than figuring out a bunch of commands to run.
Thanks. I'll go the docker-compose route after all. Familiarity might be better than whatever conveniences Docker Desktop offers. I really appreciate the help. I have a proper docker-compose.yml file now at least so I should be able to work from there.
Yeh, it doesn't look like it's exposing the ports.
I don't know docker desktop.
I just use docker compose files, even for things that don't need it. I like having a file that describes the service, instead of deciphering run args.
Some googling,
https://stackoverflow.com/a/73819697
Describes how to run a container with more specifics.
I would strongly suggest you copy the official docker compose file, and run that with "docker compose up -d".
That will configure all the components required, then you can still inspect/stop/start/view etc using docker desktop.
But I also understand the brain fog.
Maybe you could work through the fog to install Portainer once. After which, you can use that and it's web GUI to manage all your containers and compose files.
Setup on Windows/WSL with Docker Desktop (but needs 2 commands: 1 to create the volume, 1 to run the container)
https://docs.portainer.io/start/install-ce/server/docker/wsl
Portainer might be more what you are looking for, rather than docker desktop (although docker desktop does make docker installation a lot easier)
Thanks for the comment. I'm starting to think that the Docker Desktop app does not give access to (or does not use) a docker compose file. Here's what I can see I the inspector regarding compose and ports:
"Labels": {
"org.opencontainers.image.created": "2025-10-07T08:17:19.987Z",
"org.opencontainers.image.description": "Official docker-composer for wallabag.",
"org.opencontainers.image.licenses": "",
"org.opencontainers.image.revision": "480d3833bc44c555b6ee76491635fef84ec7dd86",
"org.opencontainers.image.source": "https://github.com/wallabag/docker",
"org.opencontainers.image.title": "docker",
"org.opencontainers.image.url": "https://github.com/wallabag/docker",
"org.opencontainers.image.version": "2.6.14"
},
"StopTimeout": 1
},
"NetworkSettings": {
"SandboxID": "562d8d0e2db1adbfac83511f91282282644aca1213c73f3b045dafdd8b4e3ee9",
"SandboxKey": "/var/run/docker/netns/562d8d0e2db1",
"Ports": {
"80/tcp": null
},
Thanks for the response. Yes, the image I chose had buttons to Pull and Run the container. The official image had nothing. See these screen grabs for example:
As opposed to the official one which has no buttons:

There don't appear to be any ports specified, but I don't see an option to modify them. Usually I'd do that via the compose yaml file but I've been all over the UI and not notice a facility for that.

Inspecting the container shows me this, but maybe I need to find a way to get/use the official image rather than pursue this one:
{
"Id": "d254fde210636e232c2ec64d1b721bd943df7d22fd7e90841391c3178c73722e",
"Created": "2026-02-26T20:10:01.054503592Z",
"Path": "/entrypoint.sh",
"Args": [
"wallabag"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 555,
"ExitCode": 0,
"Error": "",
"StartedAt": "2026-02-27T08:47:49.269760505Z",
"FinishedAt": "2026-02-26T20:24:20.523179421Z",
"Health": {
"Status": "starting",
"FailingStreak": 0,
"Log": [
{
"Start": "2026-02-26T20:17:03.274073218Z",
"End": "2026-02-26T20:17:03.38475801Z",
"ExitCode": 0,
"Output": "{\"appname\":\"wallabag\",\"version\":\"2.6.14\",\"allowed_registration\":false}"
},
{
"Start": "2026-02-26T20:17:33.385983677Z",
"End": "2026-02-26T20:17:33.497293427Z",
"ExitCode": 0,
"Output": "{\"appname\":\"wallabag\",\"version\":\"2.6.14\",\"allowed_registration\":false}"
},
{
"Start": "2026-02-26T20:18:03.49944726Z",
"End": "2026-02-26T20:18:03.607532885Z",
"ExitCode": 0,
"Output": "{\"appname\":\"wallabag\",\"version\":\"2.6.14\",\"allowed_registration\":false}"
},
{
"Start": "2026-02-26T20:18:33.612751302Z",
"End": "2026-02-26T20:18:33.718124719Z",
"ExitCode": 0,
"Output": "{\"appname\":\"wallabag\",\"version\":\"2.6.14\",\"allowed_registration\":false}"
},
{
"Start": "2026-02-26T20:23:51.821147421Z",
"End": "2026-02-26T20:23:52.395929172Z",
"ExitCode": 0,
"Output": "{\"appname\":\"wallabag\",\"version\":\"2.6.14\",\"allowed_registration\":false}"
}
]
}
},
"Image": "sha256:43746639f5f8abb4949394b69445f468e92c1c9430ef0986913d54e0f7994ff3",
"ResolvConfPath": "/var/lib/docker/containers/d254fde210636e232c2ec64d1b721bd943df7d22fd7e90841391c3178c73722e/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/d254fde210636e232c2ec64d1b721bd943df7d22fd7e90841391c3178c73722e/hostname",
"HostsPath": "/var/lib/docker/containers/d254fde210636e232c2ec64d1b721bd943df7d22fd7e90841391c3178c73722e/hosts",
"LogPath": "/var/lib/docker/containers/d254fde210636e232c2ec64d1b721bd943df7d22fd7e90841391c3178c73722e/d254fde210636e232c2ec64d1b721bd943df7d22fd7e90841391c3178c73722e-json.log",
"Name": "/wallabag-container",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": [],
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "bridge",
"PortBindings": {},
"RestartPolicy": {
"Name": "no",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"ConsoleSize": [
0,
0
],
"CapAdd": null,
"CapDrop": null,
"CgroupnsMode": "private",
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "private",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": null,
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": null,
"DeviceCgroupRules": null,
"DeviceRequests": null,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
"OomKillDisable": null,
"PidsLimit": null,
"Ulimits": null,
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"MaskedPaths": [
"/proc/acpi",
"/proc/asound",
"/proc/interrupts",
"/proc/kcore",
"/proc/keys",
"/proc/latency_stats",
"/proc/sched_debug",
"/proc/scsi",
"/proc/timer_list",
"/proc/timer_stats",
"/sys/devices/virtual/powercap",
"/sys/firmware"
],
"ReadonlyPaths": [
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger"
]
},
"GraphDriver": {
"Data": {
"ID": "d254fde210636e232c2ec64d1b721bd943df7d22fd7e90841391c3178c73722e",
"LowerDir": "/var/lib/docker/overlay2/b2807d062c1d8403521606ce2f302e2c67dbc8f7a28c2fb28d6db3defb156f0f-init/diff:/var/lib/docker/overlay2/667dd92b968da5e7a955ea8e9498e04427ec5400c18f3b229be6de2a2d4b1c62/diff:/var/lib/docker/overlay2/962c36d2e4871f137c79266e99be449d2cd6aaf4c8cd276fc6a6f4307ebece67/diff:/var/lib/docker/overlay2/508c50d7273f68eda7c77483117c350ede656990d05de9038947eec12243e15a/diff:/var/lib/docker/overlay2/3f483498243fb6c1d6504e7a53dfbdeb57c283e86c6af23a1420cfbde73ef770/diff:/var/lib/docker/overlay2/080f18af9a70cfd9a0cd5d36dc59436f2ac59ad5c2cdcd4bb03b4c88855bd0ba/diff:/var/lib/docker/overlay2/b1220f35e2c0332a36d94a611e41fb1b049a677be61783b8b983c38909fe01ad/diff:/var/lib/docker/overlay2/c38a62224f9f95ae2e0d4434f9cc21b041a72e137d125a28ad4530a7a1fa9f16/diff",
"MergedDir": "/var/lib/docker/overlay2/b2807d062c1d8403521606ce2f302e2c67dbc8f7a28c2fb28d6db3defb156f0f/merged",
"UpperDir": "/var/lib/docker/overlay2/b2807d062c1d8403521606ce2f302e2c67dbc8f7a28c2fb28d6db3defb156f0f/diff",
"WorkDir": "/var/lib/docker/overlay2/b2807d062c1d8403521606ce2f302e2c67dbc8f7a28c2fb28d6db3defb156f0f/work"
},
"Name": "overlay2"
},
"Mounts": [],
"Config": {
"Hostname": "d254fde21063",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"80/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/www/wallabag/bin"
],
"Cmd": [
"wallabag"
],
"Healthcheck": {
"Test": [
"CMD-SHELL",
"curl --fail --silent --show-error --user-agent healthcheck http://localhost/api/info || exit 1"
]
},
"Image": "doc75/wallabag:prev-prod",
"Volumes": null,
"WorkingDir": "/var/www/wallabag",
"Entrypoint": [
"/entrypoint.sh"
],
"Labels": {
"org.opencontainers.image.created": "2025-10-07T08:17:19.987Z",
"org.opencontainers.image.description": "Official docker-composer for wallabag.",
"org.opencontainers.image.licenses": "",
"org.opencontainers.image.revision": "480d3833bc44c555b6ee76491635fef84ec7dd86",
"org.opencontainers.image.source": "https://github.com/wallabag/docker",
"org.opencontainers.image.title": "docker",
"org.opencontainers.image.url": "https://github.com/wallabag/docker",
"org.opencontainers.image.version": "2.6.14"
},
"StopTimeout": 1
},
"NetworkSettings": {
"SandboxID": "562d8d0e2db1adbfac83511f91282282644aca1213c73f3b045dafdd8b4e3ee9",
"SandboxKey": "/var/run/docker/netns/562d8d0e2db1",
"Ports": {
"80/tcp": null
},
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"DriverOpts": null,
"GwPriority": 0,
"NetworkID": "8f978f13fd60cc7921cd3549b2e230d96d2bc04ac162697f7a72d7ce31e6b941",
"EndpointID": "f37c91717760955ba1cb4a30298bb32d3a66004a3a4cfeb7a6e98138748cd22d",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"MacAddress": "da:1d:24:9b:5c:ed",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"DNSNames": null
}
}
}
}
You should probably add your compose file as well. Which port are you targeting from your frontend, and what are your port bindings? Could be something that @towerful mentioned about the default 80 port..
Reading https://github.com/wallabag/docker I don't see any mention of doc75/wallabag as an official image. Any reason you went with a 3rd party image?
Also, might be that you aren't exposing the port? Wallabag looks like it runs on port 80. Might be that port 80 is restricted (or in use), so docker desktop can't bind it. Maybe forward a random port to it.
You can also inspect the container. It will show env vars, networking binds, volume binds etc.
Make sure they align with what's in the official docker-compose. Once you get that working, you can start tweaking towards your requirement.
Good point. I've added those. Thanks.
Not without posting the container logs.
well this is good to know....I'll be doing this on my docker hosts shortly
The announcement is thoughful. It explicitely tells user the tool won't reveive maintenance so they know to look for alternatives right know.
Silently abandonning a project could cause an accumulation of issues, unmerged MRs over time until peole realize the maintainers aren't coming back.
Yes, but I think most people will just switch the image of Watchtower, because they are used to it. Thanks for showing another option 😊