r/docker

▲ 32 r/docker

How much Linux knowledge is needed to study Docker?

I'm trying to study Docker, but I don't have much knowledge or experience using Linux. In this case, would it have a significant negative impact on Docker learning?

reddit.com
u/Apart-Road-30 — 19 hours ago
▲ 1 r/docker

Anyone brave enough to trust an ai agent running alongside your production app to monitor and execute commands on your behalf on server for your docker apps?

Just a random curiosity, but is anyone actually letting an AI agent run alongside their production Docker apps just to check logs and explore errors?

Like, instead of digging through logs yourself when something acts up, the AI just looks at them, identifies the problem, and tells you what went wrong.

Are there any tools built for this yet, or has anyone tried rigging up a simple setup like this?

reddit.com
u/dev_4_exp — 15 hours ago
▲ 9 r/docker

all containers and images gone

I am using docker desktop on windows 11, and after a restart of my pc, all of my containers and images are gone. Is there any way to recover them? When I restarted my pc and docker opened automatically, it was taking up most of my memory and brought up an error message that referred me to windows-daemon.json, when I checked, the file was empty, so I deleted the file and now docker opens fine but without anything I have done on it.

reddit.com
u/naomi2v — 1 day ago
▲ 1 r/docker

Is there good way not selfhost (managed host instead) a docker image for a side project?

This is for a side project so I'm not looking for a service that has infinite scaling or edge runtimes or whatever. I'm just looking to not have to set up a VPS myself and set up the security on it myself.

Does anyone know if theres a docker host that does this sort of thing? e.g. i pay 5 or 10 bux a month and they just host it? Every service that I've looked up (e.g. vercel, cloudflare, etc) seem to have their own framework that they want you to implement into your codebase to run the container in their ecosystem to take advantage of a lot of crazy features that I don't plan to use anyway, and I don't want to spend the time to write my code into their framework (and then rewrite it again if I choose to move to a different host).

reddit.com
u/neptune-insight-589 — 2 days ago
▲ 3 r/docker+1 crossposts

Immich deployed on Docker works but not if deployed through Portainer

I'm a complete newbie to all this but I'm trying to learn. I've read everywhere that Portainer is supposed to make things easier but so far it's been the opposite.

I got a Ugreen NAS with Docker installed on it. I used Portainer to deploy Immich. It says the stack was deployed successfully, the 4 services are running, but loading the Immich webpage does not work at all. If I delete the stack and deploy again through Docker using the same yml and env files, then everything works and I'm able to access the Immich webpage.

I can call it a day and move on but I'm curious and would like to understand why it doesn't work through Portainer if anyone can ELI5.

reddit.com
u/StarsTurnCold — 2 days ago
▲ 2 r/docker+1 crossposts

Installing self-hosted stoat using wnstify docker-compose.yml

Has anyone installed stoatchat with the installers from wnstify? ( YouTube ) After looking through the repository it does seem like it would help lockdown a self hosted stoat server. I've been playing around with it on a test server and I'm having trouble with the script setting user file/folder permissions. I can run the docker-compose.yml as root and manually change the permissions but that leads me to believe that I've done something wrong with the underlying Docker install.

reddit.com
u/EuropaSteve — 3 days ago
▲ 4 r/docker

Advice - Docker/Docker desktop on external ssd

So I have a Hp omnibook 5 , comes with 512GB , 16GB ram , I configured my system to be dual boot splitting approx half disk space to both windows 11 and arch linux(100gb to root , 156 gb to home)

So whenever I try to install heavy apps like android studio, Docker desktop I always run into the issue of running out of space

So I plan to use external SSD (either 2 256GB or 1 512GB), how much impact on speed will occur if install such heavy softwares on external ssd also will there be any security issues or any corruption issues due to it?

Port on HP Omnibook 5

USB-C Ports (x2) 10 Gbps (USB 3.2 Gen 2) USB-A Port (10 Gbps) 10 Gbps (USB 3.2 Gen 2) USB-A Port (5 Gbps) 5 Gbps (USB 3.2 Gen 1)

I have just started my journey in building images and containers for my backend apps so I have very little idea of such things.

reddit.com
u/Middle-Football535 — 4 days ago
▲ 37 r/docker

Will Docker Desktop ever be as lightweight as Orbstack one day?

I'm using Apple Silicon and apparently the benchmarks make it clear the Orbstack is the winner by quite a margin. Is the Docker team working on this or perfectly fine with their app taking up more resources?

I would prefer to use Docker Desktop, perhaps I am just sucked into branding and no reason to do so, but somehow I feel safer using it, knowing it is from the source rather than a third party. I dunno, maybe that's silly to think this way.

For my M3 MBA 16GB I probably shot myself in the foot a bit for choosing 16GB, but it is what it is...

reddit.com
u/avidrunner84 — 6 days ago
▲ 0 r/docker

Docker Desktop vs colima

I uninstalled Docker Desktop this week.

Not because containers are bad. Because I only needed a Docker engine, and Docker Desktop had become a 90GB background app I wasn’t even using.

My docker CLI was already pointed at Colima.

If you are on a Mac and you just want docker / docker compose to work, Colima is the better default.

Why I switched

Docker Desktop is a full product: GUI, VM, Kubernetes, extensions, updater, license. That is fine if you want all of it.

I wanted three things:

  • docker build
  • docker compose up
  • something that starts fast and stays out of the way

Colima does that. It runs a lightweight Linux VM via Lima, then speaks the normal Docker API. Same commands. Same Compose files. No Desktop app sitting in the menu bar.

Why it beats Docker Desktop for my setup

  1. No license tax. Docker Desktop is free only under Docker’s personal-use rules. For a lot of company machines, that becomes a paid product. Colima is open source.
  2. CLI-first. I already live in the terminal. I do not need another dashboard for images and containers.
  3. Smaller surface area. Less GUI, fewer services, fewer leftover files. Docker Desktop left behind a sparse VM disk that had grown to ~89GB after I had already moved to Colima.
  4. Same workflow. dockerdocker compose, and most tooling just work. You are not learning a new ecosystem.
  5. Optional Kubernetes. If I need it, Colima can run k3s. If I don’t, it doesn’t.

The honest tradeoff

You lose the polished GUI. Resource limits and VM settings live in the CLI (colima start --cpu 4 --memory 8 --disk 60). That is a feature for me, not a bug.

If you are a Mac developer and Docker Desktop feels heavy, try this:

brew install colima docker docker-compose
colima start
docker context use colima

Then keep working the way you already do.

Curious if other Mac/Linux folks have fully dropped Docker Desktop, or if the GUI is still worth it for you.

#Docker #Colima #DevOps #MacOS #SoftwareEngineering #OpenSource

reddit.com
u/createswowtech — 6 days ago
▲ 0 r/docker

I updated docker and now nothing is accessible?

I'm using a DXP4800+, docker, and after this most recent update of docker none of my containers are accessible. If this seems more like a ugreen problem please let me know and I will get assistance from there.

In the beginning they were not even starting after update. Im posting what I received below.

I tried redeploying the containers but it would give errors and fail deployment. I exported all my configs and images to be safe, uninstalled docker, reinstalled docker, and I tried deploying kavita just to try it out. The container is running and the logs don't look out of whack to me but I don't even know what I'm looking at mostly, either way I can't access Kavita locally or any other container I've tried. Jellyfin, navidrome, seer, nginxpm, etc. etc.

"Failed to edit container portainer. Error: UpdateContainer fail container name 'portainer': target volume mntPath /var/run/docker.sock not Found" and *"*Failed to edit container linuxserver_jellyfin-1. Error: UpdateContainer fail container name 'linuxserver_jellyfin-1': container startup failed"

I'm guessing that from the portainer error I will have to remount that docker.sock path or something. I am very new to this so I would appreciate any and all help/tips.

Before this update all of my services were running for a significant amount of time without failure.

Kavita logs below

[custom-init] No custom files found, skipping...
[Kavita] [2026-08-13 21:18:27.740 -04:00  6] [Information] Kavita.Server.Program Running Manual Migrations
[Kavita] [2026-08-13 21:18:28.007 -04:00  6] [Information] Kavita.Server.Program Running Manual Migrations - complete
[Kavita] [2026-08-13 21:18:28.978 -04:00  1] [Information] Kavita.Services.TaskScheduler Scheduling reoccurring tasks
[Kavita] [2026-08-13 21:18:28.985 -04:00  1] [Debug] Kavita.Services.TaskScheduler Scheduling Scan Library Task for daily
[Kavita] [2026-08-13 21:18:29.053 -04:00  1] [Debug] Kavita.Services.TaskScheduler Scheduling Backup Task for daily
[Kavita] [2026-08-13 21:18:29.058 -04:00  1] [Debug] Kavita.Services.TaskScheduler Scheduling Cleanup Task for daily
[Kavita] [2026-08-13 21:18:29.061 -04:00  1] [Debug] Kavita.Services.TaskScheduler Scheduling CBL Sync Task for 0 4 * * *
[Kavita] [2026-08-13 21:18:29.085 -04:00  1] [Information] Kavita.Services.TaskScheduler Scheduling Auto-Update tasks
[Kavita] [2026-08-13 21:18:29.089 -04:00  1] [Debug] Kavita.Services.TaskScheduler Scheduling stat collection daily at 19:00
[Kavita] [2026-08-13 21:18:29.108 -04:00  6] [Information] Kavita.Server.Program Running Migrations
[Kavita] [2026-08-13 21:18:29.253 -04:00  6] [Information] Kavita.Server.Program Running Migrations - complete
[Kavita] [2026-08-13 21:18:29.469 -04:00  1] [Information] Kavita.Server.Program Starting with base url as /
[Kavita] [2026-08-13 21:18:29.529 -04:00  1] [Information] Microsoft.Hosting.Lifetime Now listening on: http://[::]:5000
[Kavita] [2026-08-13 21:18:29.531 -04:00  1] [Information] Kavita.Server.Program Kavita - v0.9.0.2
[Kavita] [2026-08-13 21:18:29.539 -04:00  1] [Information] Microsoft.Hosting.Lifetime Application started. Press Ctrl+C to shut down.
[Kavita] [2026-08-13 21:18:29.539 -04:00  1] [Information] Microsoft.Hosting.Lifetime Hosting environment: Production
[Kavita] [2026-08-13 21:18:29.539 -04:00  1] [Information] Microsoft.Hosting.Lifetime Content root path: /app/kavita
[Kavita] [2026-08-13 21:18:29.632 -04:00  16] [Warning] Kavita.Services.TaskScheduler Attempt [] failed, retrying in 121000ms
Flurl.Http.FlurlHttpException: Call failed. Resource temporarily unavailable (api.github.com:443): GET https://api.github.com/repos/Kareadita/Kavita/releases/latest
---> System.Net.Http.HttpRequestException: Resource temporarily unavailable (api.github.com:443)
---> System.Net.Sockets.SocketException (11)
: Resource temporarily unavailable
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.InjectNewHttp11ConnectionAsync(QueueItem queueItem)
at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.SocketsHttpHandler.<SendAsync>g__CreateHandlerAndSendAsync|115_0(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
at Flurl.Http.FlurlClient.SendAsync(IFlurlRequest request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at Flurl.Http.FlurlClient.HandleExceptionAsync(FlurlCall call, Exception ex, CancellationToken token)
at Flurl.Http.FlurlClient.SendAsync(IFlurlRequest request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
at Flurl.Http.FlurlClient.SendAsync(IFlurlRequest request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
at Flurl.Http.ResponseExtensions.ReceiveJson[T](Task`1 response)
at Kavita.Services.VersionUpdaterService.GetGithubRelease() in C:\Users\josep\Documents\Projects\KavitaOrg\Kavita\Kavita.Services\VersionUpdaterService.cs:line 596
at Kavita.Services.VersionUpdaterService.CheckForUpdate(CancellationToken ct) in C:\Users\josep\Documents\Projects\KavitaOrg\Kavita\Kavita.Services\VersionUpdaterService.cs:line 113
at Kavita.Services.TaskScheduler.<>c__DisplayClass72_0.<<CheckForUpdate>b__0>d.MoveNext() in C:\Users\josep\Documents\Projects\KavitaOrg\Kavita\Kavita.Services\TaskScheduler.cs:line 559
--- End of stack trace from previous location ---
at Polly.AsyncPolicy.<>c__DisplayClass44_0.<<ImplementationAsync>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at Polly.Retry.AsyncRetryEngine.ImplementationAsync[TResult](Func`3 action, Context context, ExceptionPredicates shouldRetryExceptionPredicates, ResultPredicates`1 shouldRetryResultPredicates, Func`5 onRetryAsync, CancellationToken cancellationToken, Int32 permittedRetryCount, IEnumerable`1 sleepDurationsEnumerable, Func`4 sleepDurationProvider, Boolean continueOnCapturedContext)
Connection to localhost (::1) 5000 port [tcp/*] succeeded!
[ls.io-init] done.
[Kavita] [2026-08-13 21:20:30.647 -04:00  6] [Warning] Kavita.Services.TaskScheduler Attempt [] failed, retrying in 278000ms
Flurl.Http.FlurlHttpException: Call failed. Resource temporarily unavailable (api.github.com:443): GET https://api.github.com/repos/Kareadita/Kavita/releases/latest
---> System.Net.H
ttp.HttpRequestException: Resource temporarily unavailable (api.github.com:443)
---> System.Net.Sockets.SocketException (11): Resource temporarily unavailable
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.InjectNewHttp11ConnectionAsync(QueueItem queueItem)
at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
at Flurl.Http.FlurlClient.SendAsync(IFlurlRequest request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at Flurl.Http.FlurlClient.HandleExceptionAsync(FlurlCall call, Exception ex, CancellationToken token)
at Flurl.Http.FlurlClient.SendAsync(IFlurlRequest request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
at Flurl.Http.FlurlClient.SendAsync(IFlurlRequest request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
at Flurl.Http.ResponseExtensions.ReceiveJson[T](Task`1 response)
at Kavita.Services.VersionUpdaterService.GetGithubRelease() in C:\Users\josep\Documents\Projects\KavitaOrg\Kavita\Kavita.Services\VersionUpdaterService.cs:line 596
at Kavita.Services.VersionUpdaterService.CheckForUpdate(CancellationToken ct) in C:\Users\josep\Documents\Projects\KavitaOrg\Kavita\Kavita.Services\VersionUpdaterService.cs:line 113
at Kavita.Services.TaskScheduler.<>c__DisplayClass72_0.<<CheckForUpdate>b__0>d.MoveNext() in C:\Users\josep\Documents\Projects\KavitaOrg\Kavita\Kavita.Services\TaskScheduler.cs:line 559
--- End of stack trace from previous location ---
at Polly.AsyncPolicy.<>c__DisplayClass44_0.<<ImplementationAsync>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at Polly.Retry.AsyncRetryEngine.ImplementationAsync[TResult](Func`3 action, Context context, ExceptionPredicates shouldRetryExceptionPredicates, ResultPredicates`1 shouldRetryResultPredicates, Func`5 onRetryAsync, CancellationToken cancellationToken, Int32 permittedRetryCount, IEnumerable`1 sleepDurationsEnumerable, Func`4 sleepDurationProvider, Boolean continueOnCapturedContext)
[Kavita] [2026-08-13 21:25:08.656 -04:00  6] [Warning] Kavita.Services.TaskScheduler Attempt [] failed, retrying in 399000ms
Flurl.Http.FlurlHttpException: Call failed. Resource temporarily unavailable (api.github.com:443): GET https://api.github.com/repos/Kareadita/Kavita/releases/latest
---> System.Net.Http.HttpRequestException: Resource temporarily unavailable (api.github.com:443)
---> System.Net.Sockets.S
ocketException (11): Resource temporarily unavailable
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.InjectNewHttp11ConnectionAsync(QueueItem queueItem)
at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
at Flurl.Http.FlurlClient.SendAsync(IFlurlRequest request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at Flurl.Http.FlurlClient.HandleExceptionAsync(FlurlCall call, Exception ex, CancellationToken token)
at Flurl.Http.FlurlClient.SendAsync(IFlurlRequest request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
at Flurl.Http.FlurlClient.SendAsync(IFlurlRequest request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
at Flurl.Http.ResponseExtensions.ReceiveJson[T](Task`1 response)
at Kavita.Services.VersionUpdaterService.GetGithubRelease() in C:\Users\josep\Documents\Projects\KavitaOrg\Kavita\Kavita.Services\VersionUpdaterService.cs:line 596
at Kavita.Services.VersionUpdaterService.CheckForUpdate(CancellationToken ct) in C:\Users\josep\Documents\Projects\KavitaOrg\Kavita\Kavita.Services\VersionUpdaterService.cs:line 113
at Kavita.Services.TaskScheduler.<>c__DisplayClass72_0.<<CheckForUpdate>b__0>d.MoveNext() in C:\Users\josep\Documents\Projects\KavitaOrg\Kavita\Kavita.Services\TaskScheduler.cs:line 559
--- End of stack trace from previous location ---
at Polly.AsyncPolicy.<>c__DisplayClass44_0.<<ImplementationAsync>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at Polly.Retry.AsyncRetryEngine.ImplementationAsync[TResult](Func`3 action, Context context, ExceptionPredicates shouldRetryExceptionPredicates, ResultPredicates`1 shouldRetryResultPredicates, Func`5 onRetryAsync, CancellationToken cancellationToken, Int32 permittedRetryCount, IEnumerable`1 sleepDurationsEnumerable, Func`4 sleepDurationProvider, Boolean continueOnCapturedContext)
[Kavita] [2026-08-13 21:31:47.667 -04:00  23] [Error] Hangfire.AutomaticRetryAttribute Failed to process the job '2': an exception occurred.
Flurl.Http.FlurlHttpException: Call failed. Resource temporarily unavailable (api.github.com:443): GET https://api.github.com/repos/Kareadita/Kavita/releases/latest
---> System.Net.Http.HttpRequestException: Resource temporarily unavailable (api.github.com:443)
---> System.Net.Sockets.SocketException (11): Resource temporarily unavailable
at System.Net.Sockets.Socket.Awai
tableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.InjectNewHttp11ConnectionAsync(QueueItem queueItem)
at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
at Flurl.Http.FlurlClient.SendAsync(IFlurlRequest request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at Flurl.Http.FlurlClient.HandleExceptionAsync(FlurlCall call, Exception ex, CancellationToken token)
at Flurl.Http.FlurlClient.SendAsync(IFlurlRequest request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
at Flurl.Http.FlurlClient.SendAsync(IFlurlRequest request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
at Flurl.Http.ResponseExtensions.ReceiveJson[T](Task`1 response)
at Kavita.Services.VersionUpdaterService.GetGithubRelease() in C:\Users\josep\Documents\Projects\KavitaOrg\Kavita\Kavita.Services\VersionUpdaterService.cs:line 596
at Kavita.Services.VersionUpdaterService.CheckForUpdate(CancellationToken ct) in C:\Users\josep\Documents\Projects\KavitaOrg\Kavita\Kavita.Services\VersionUpdaterService.cs:line 113
at Kavita.Services.TaskScheduler.<>c__DisplayClass72_0.<<CheckForUpdate>b__0>d.MoveNext() in C:\Users\josep\Documents\Projects\KavitaOrg\Kavita\Kavita.Services\TaskScheduler.cs:line 559
--- End of stack trace from previous location ---
at Polly.AsyncPolicy.<>c__DisplayClass44_0.<<ImplementationAsync>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at Polly.Retry.AsyncRetryEngine.ImplementationAsync[TResult](Func`3 action, Context context, ExceptionPredicates shouldRetryExceptionPredicates, ResultPredicates`1 shouldRetryResultPredicates, Func`5 onRetryAsync, CancellationToken cancellationToken, Int32 permittedRetryCount, IEnumerable`1 sleepDurationsEnumerable, Func`4 sleepDurationProvider, Boolean continueOnCapturedContext)
at Polly.AsyncPolicy.ExecuteInternalAsync(Func`3 action, Context context, Boolean continueOnCapturedContext, CancellationToken cancellationToken)
at Kavita.Services.TaskScheduler.CheckForUpdate(CancellationToken cancellationToken) in C:\Users\josep\Documents\Projects\KavitaOrg\Kavita\Kavita.Services\TaskScheduler.cs:line 557
at InvokeStub_TaskAwaiter.GetResult(Object, Object, IntPtr*)
at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
reddit.com
u/Dominick_PK — 6 days ago
▲ 1 r/docker

Any debugging / general advice on how I could have caught this weird error?

I just spent a whole day on a very irritating gotcha, and I'm looking to see if there's a big-picture approach that can keep me from ending up here again.

Fairly new to Docker. Working on containerizing a web app with a couple different moving parts. Got the frontend working inside of a Caddy image, got it pushed to my DigitalOcean droplet, but then it just sat there, not acknowledging or even rejecting any requests. I figured out that it had crashed because it tried to serve to a busy port, but after clearing that up it still wasn't working. Looked in the logs, and there were some opaque errors about failing to connect to the internet (I've since deleted those logs, otherwise I'd share).

I threw these logs at an LLM, and after some arguing, it asked me to run nslookup web1 inside of the container. That returned:

Server:     127.0.0.53
Address:    127.0.0.53#53

** server can't find web1: SERVFAIL

From this output, the LLM suggested that:

  • Caddy, not receiving any defaults for resolv.conf, had inherited from the droplet's resolv.conf, which listens on port 53, which is just a loopback; thus, no connection.
  • The fix was to add dns: [1.1.1.1,8.8.8.8] to the compose file, or alternatively to the droplet's daemon.json file to apply for the whole droplet.

Did this, rebuilt the container, and sure enough, that was exactly the issue.

And now I'm questioning everything. How the hell would anyone have caught this? Did I overlook a search result or documentation that explains exactly what I saw? Do I not know enough about Linux to be using Docker? Am I a soydev????

For real though, I'd appreciate any advice. I could've easily spent a week on this if I hadn't used AI, but I wanna gain the knowledge to be more self-reliant. Did I miss something critical, or is this just one of those things that you don't learn til you get burned?

reddit.com
u/KGBsurveillancevan — 7 days ago
▲ 25 r/docker

Are clean base, minimal and hardened images the same thing?

I've been reading more about container security lately, and one thing that's confusing me is the terminology around base images. People often talk about clean images, minimal images, hardened images, and more recently near-zero CVE images, but they don't seem to mean exactly the same thing. My understanding is that minimal images reduce size by including fewer packages. Also, hardened images use security best practices and remove unnecessary risk. And clean or near-zero CVE images aim to eliminate known vulnerabilities before they reach production.

Am I thinking about this correctly, or is there a lot more overlap than I'm giving credit for? I'm interested in how people choose between these approaches in real-world Docker environments.

reddit.com
u/Hot-Wheel6005 — 8 days ago
▲ 4 r/docker

Bedrock Server setup in docker

Hello. Does anyone have a simple easy to read set of step by step instructions to set up a server in docker? Ive been struggling for a bit. Im an old man and dont understand the resources im finding online. Thank you

reddit.com
u/Happy1327 — 8 days ago
▲ 9 r/docker+1 crossposts

Do you rebase container images?

I've been looking into ways to update container images in prod more efficiently. Rebasing seems an interesting option. Instead of rebuilding the whole application image we just swap the underlying runtime base, and all the layers on top of that are reused with their digests staying the same. So, faster and less traffic-heavy as nodes can reuse the unchanged layers.

Looks attractive in theory. In practice, rebuilding might seem like a more clear path? Just rebuild everything and test the artifact.

So, do you use rebasing? And if you don't, why not?

reddit.com
u/cat-edelveis — 9 days ago
▲ 0 r/docker

Disk space issues on apt install while building container

Hello,

I am experiencing issues when I try to build some containers. The containers that I try to build are not fancy or anything.

I am on a Mac, I am using Tahoe. The Dockerfile is using php:8.5-apache-trixie, and it fails when I run the command apt install with 27 packages, which is a huge amount of packages, I admit. When installing them, I have the following error:

Error: You don't have enough free space in /var/cache/apt/archives/

On my mac, I have no disk space issue, the filesystem state look like this:

Filesystem        Size    Used   Avail Capacity iused ifree %iused  Mounted on
/dev/disk3s3s1   460Gi    17Gi   133Gi    12%    426k  1,4G    0%   /
devfs            198Ki   198Ki     0Bi   100%     686     0  100%   /dev
/dev/disk3s6     460Gi    20Ki   133Gi     1%       0  1,4G    0%   /System/Volumes/VM
/dev/disk3s4     460Gi    15Gi   133Gi    11%    2,1k  1,4G    0%   /System/Volumes/Preboot
/dev/disk3s2     460Gi   813Mi   133Gi     1%     316  1,4G    0%   /System/Volumes/Update
/dev/disk1s2     500Mi   6,0Mi   481Mi     2%       1  4,9M    0%   /System/Volumes/xarts
/dev/disk1s1     500Mi   5,4Mi   481Mi     2%      39  4,9M    0%   /System/Volumes/iSCPreboot
/dev/disk1s3     500Mi   2,5Mi   481Mi     1%      53  4,9M    0%   /System/Volumes/Hardware
/dev/disk3s1     460Gi   292Gi   133Gi    69%    2,1M  1,4G    0%   /System/Volumes/Data
map auto_home      0Bi     0Bi     0Bi   100%       0     0     -   /System/Volumes/Data/home
/dev/disk3s3     460Gi    17Gi   133Gi    12%    459k  1,4G    0%   /System/Volumes/Update/mnt1

When I check the builders disk usage, it doesn't looks this big, the docker buildx du command says I have 391.2MB used. I've read the apt.conf documentation, no cache limitation is set. So I can't identify the issue's source. I am looking for help.

I have already tried using docker system prune -a and restarting my Mac, this doesn't change anything.

My Dockerfile is as follow:

# set build args
ARG PHP_VERSION=8.5
ARG WEB_DIR="/var/www/project"

# Configure webserver
FROM php:${PHP_VERSION}-apache-trixie
ARG WEB_DIR

## Copy configs
COPY configs/Php configs/System configs/Apache /tmpcopy/
WORKDIR ${WEB_DIR}

USER root
RUN mkdir -p /var/www/apache2 && chown -R www-data:www-data /var/www/apache2

ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/

## Set env
ENV APACHE_RUN_SERVER=www-data \
APACHE_RUN_GROUP=www-data \
APACHE_RUN_USER=www-data \
APACHE_SRV_ADMIN=hotlinesi@rhinos.fr \
SERVER_NAME=rs_apache_php8 \
APACHE_LOG_DIR=/var/www//apache2 \
APACHE_LOCK_DIR=/var/www/apache2 \
APACHE_PID_FILE=/var/www/apache2/apache2.pid\
APACHE_RUN_DIR=/var/www/apache2 \
WEB_DIR=/var/www/project \
APACHE_DOC_ROOT=/var/www/project/public

## Config
USER root
RUN apt update -y && apt upgrade -y && xargs -a /tmpcopy/apt-system-packages.txt apt install -y --no-install-recommends \
&& xargs -a /tmpcopy/install-tools.txt apt install -y --no-install-recommends \
&& xargs -a /tmpcopy/php-extensions.txt install-php-extensions \
&& mv /tmpcopy/php.ini-dev "$PHP_INI_DIR"/php.ini-development \
&& mv /tmpcopy/php.ini-prod "$PHP_INI_DIR"/php.ini-production \
&& echo "ServerName ${SERVER_NAME}" >> /etc/apache2/apache2.conf \
&& sed -i 's/Listen 80/Listen 8080/g' /etc/apache2/ports.conf \
&& mv /tmpcopy/default_vhost.conf /etc/apache2/sites-available/000-default.conf \
&& mv /tmpcopy/httpd-secure.conf /etc/apache2/conf-available/httpd-secure.conf \
&& ln -svf /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-enabled/000-default.conf \
&& mv /tmpcopy/locales.txt /etc/locale.gen && locale-gen \
&& ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime \
&& dpkg-reconfigure -f noninteractive tzdata \
&& a2enmod rewrite \
&& a2enmod headers \
&& mkdir -p /var/www/.ssh \
&& chmod 0700 /var/www/.ssh \
&& ssh-keyscan github.com > /var/www/.ssh/known_hosts \
&& chown -R www-data:www-data /var/www \
&& mkdir -p ${WEB_DIR} \
&& chown www-data:www-data ${WEB_DIR} && chmod 760 ${WEB_DIR} \
&& git config --global --add safe.directory ${WEB_DIR} \
&& php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
&& php composer-setup.php --install-dir=/usr/bin/ --filename=composer \
&& rm composer-setup.php \
&& xargs -a /tmpcopy/install-tools.txt apt remove -y --purge \
&& apt autoremove -y && apt autoclean -y && apt clean \
&& rm -rf /tmpcopy \
&& mkdir -p /var/www/.composer && chown -R www-data /var/www/.composer

## Run apache
CMD [ "bash", "-c", "apache2-foreground" ]

# chg user
USER www-data:www-data

This is the list of package I am installing:

openssh-client
locales
curl
lsof
default-mysql-client
tar
zlib1g-dev
libpng-dev
libzip-dev
libjpeg62-turbo
libxrender1
libmagickwand-dev
xfonts-base
xfonts-75dpi
ca-certificates
xauth
xvfb
fontconfig
dos2unix
jq
git
unzip
pkg-config
libcurl4-openssl-dev
libicu-dev
zlib1g-dev
reddit.com
u/antomaa12 — 9 days ago
▲ 1 r/docker

Weird pull issue with TecharoHQ Anubis container

I have an Alpine LXC running NPMPlus which I use Anubis with. Upon attempting to pull Anubis' container (regardless of if done via the compose file or direct docker pull ghcr.io/techarohq/anubis:latest, I get a very odd error.

That being:

failed to extract layer (application/vnd.oci.image.layer.v1.tar+gzip sha256:dae2790b70f9eb15de85a179b3978ee8a915f0bcac270d09074f3cb283106d9d) to overlayfs as "extract-279380455--MFm sha256:458136df58646e7146e8240b685e4e6bfffa019ba10d3c221
ff59b3928f54d8c": mount callback failed on /var/lib/docker/containerd/daemon/tmpmounts/containerd-mount3164233251: operation not permitted

Anyone know what this means?

Here's the docker info, it is running as root:

Client:
Version:    29.5.3
Context:    default
Debug Mode: false
Plugins:
 buildx: Docker Buildx (Docker Inc.)
   Version:  v0.34.1
   Path:     /usr/libexec/docker/cli-plugins/docker-buildx
 compose: Docker Compose (Docker Inc.)
   Version:  v5.1.4
   Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
Containers: 2
 Running: 2
 Paused: 0
 Stopped: 0
Images: 4
Server Version: 29.5.3
Storage Driver: overlayfs
 driver-type: io.containerd.snapshotter.v1
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 2
Plugins:
 Volume: local
 Network: bridge host ipvlan macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
CDI spec directories:
 /etc/cdi
 /var/run/cdi
Swarm: inactive
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: fff62f14765df376e5fc36f5a8f8e795b5670f61
runc version: bb14dabeb7185bb72c8c86735d090dcb20f36587
init version:  
Security Options:
 seccomp
  Profile: builtin
 cgroupns
Kernel Version: 7.0.0-3-pve
Operating System: Alpine Linux v3.24
OSType: linux
Architecture: x86_64
CPUs: 8
Total Memory: 4GiB
Name: npmplus
ID: d2cc3a15-5fdc-41d3-a6cb-c6b45d018259
Docker Root Dir: /var/lib/docker
Debug Mode: false
Experimental: false
Insecure Registries:
 ::1/128
 127.0.0.0/8
Live Restore Enabled: true
Firewall Backend: iptables
 EnableUserlandProxy: true
 UserlandProxyPath: /usr/bin/docker-proxy

WARNING: No swap limit support
reddit.com
u/Grand_Bet_2472 — 9 days ago
▲ 19 r/docker+1 crossposts

Docker networking and reverse proxy

I am having some issue understanding how to forward traffic to a container from NPM (Nginx Proxy Manager). Understanding the docker networking layer is giving me some trouble, and I hope I might get some feedback and suggestion on my current setup.

I had been running a grimmory container without issue, setup with docker-compose and behind a static nginx reverse proxy. A few weeks ago I discovered that the advertised ports for the service had been bound to 0.0.0.0, making the service available on the public IP and any DNS entries for the server on that port.

Unhappy with this setup, I have been trying to learn how to route all traffic to docker services through the reverse proxy. I don't want to expose any more ports that necessary to minimise the attack surface on the server. Thus I've been looking at NPM on the suggestion of other posts.

I have been able to set NPM up and forward the management port so it's no longer exposed and get SSL certs for the sub-domain . Now I am having difficulty in getting traffic forwarded from NPM to the grimmory service without binding a port to 0.0.0.0 on the docker host.

I have done some reading on the docker networking layer, and found that it's default behaviour is to bind to the host, as I saw earlier. I have also read that creating different docker networks and isolating your containers is an important security measure. I have thus created two networks in docker;

  • Proxy: for the NPM service
  • grimmory_stack: For grimmory and the database container.

I have added the grimmory service to the proxy network and the grimmory_stack network so both can talk with each other, with the database service not on the proxy network. I have confirmed this network connectivity, the output of docker network inspect proxy below;

        {
            "Name": "proxy",
            "Id": "d0538741facec1f19adfeef5ce64738c8bfa0e6e21b24df4ec73e260fd3ddef4",
            "Created": "2026-08-06T13:30:45.066391048Z",
            "Scope": "local",
            "Driver": "bridge",
            "EnableIPv4": true,
            "EnableIPv6": false,
            "IPAM": {
                "Driver": "default",
                "Options": {},
                "Config": [
                    {
                        "Subnet": "172.18.0.0/16",
                        "Gateway": "172.18.0.1"
                    }
                ]
            },
            "Internal": false,
            "Attachable": false,
            "Ingress": false,
            "ConfigFrom": {
                "Network": ""
            },
            "ConfigOnly": false,
            "Options": {},
            "Labels": {},
            "Containers": {
                "4051b0bb567a39fb8409ef3df5560378a8b0341777559cd795a2df8f14eaf0a4": {
                    "Name": "grimmory",
                    "EndpointID": "195d4eb46a62af397448bbe1143740e3c89b384238e8598bf7fd960330036188",
                    "MacAddress": "de:1e:4e:9b:20:dc",
                    "IPv4Address": "172.18.0.3/16",
                    "IPv6Address": ""
                },
                "e341a2cb9e9b8a79840c6aaf6c06be700375f4a8aa45557af55bb6882f3bc0bb": {
                    "Name": "nginx-proxy-app-1",
                    "EndpointID": "7de5753d1734d3ed3d02c206c43eaf86e9c92a6705b0733d5631be3cc56f83df",
                    "MacAddress": "e2:2e:16:c4:de:67",
                    "IPv4Address": "172.18.0.2/16",
                    "IPv6Address": ""
                }
            },
            "Status": {
                "IPAM": {
                    "Subnets": {
                        "172.18.0.0/16": {
                            "IPsInUse": 5,
                            "DynamicIPsAvailable": 65531
                        }
                    }
                }
            }
        }
    ]

Please also see the docker-compose files for both the NPM and Grimmory docker services;

    services:
      app:
        image: 'jc21/nginx-proxy-manager:latest'
        restart: unless-stopped
        networks:
          - proxy
        ports:
          # These ports are in format <host-port>:<container-port>
          - '80:80' # Public HTTP Port
          - '443:443' # Public HTTPS Port
    #      - '81:81' # Admin Web Port #Forwarded through 443, should not be exposed.
          # Add any other Stream port you want to expose
          # - '21:21' # FTP
    
        environment:
          TZ: "GMT"
    
          # Uncomment this if you want to change the location of
          # the SQLite DB file within the container
          # DB_SQLITE_FILE: "/data/database.sqlite"
    
          # Uncomment this if IPv6 is not enabled on your host
          # DISABLE_IPV6: 'true'
    
        volumes:
          - ./data:/data
          - ./letsencrypt:/etc/letsencrypt
    
    networks:
      proxy:
        external: true


    services:
      grimmory:
        image: grimmory/grimmory:latest
        # Convenience tag:
        # image: grimmory/grimmory:<release-version>
        # Alternative: ghcr.io/grimmory-tools/grimmory:<release-version>
        # To build from source instead: comment out 'image' and uncomment below
        # build: .
        container_name: grimmory
        environment:
          - USER_ID=${APP_USER_ID}
          - GROUP_ID=${APP_GROUP_ID}
          - TZ=${TZ}
          - DATABASE_URL=${DATABASE_URL}
          - DATABASE_USERNAME=${DB_USER}
          - DATABASE_PASSWORD=${DB_PASSWORD}
          - API_DOCS_ENABLED=${API_DOCS_ENABLED}
          - DISK_TYPE=${DISK_TYPE}
        depends_on:
          mariadb:
            condition: service_healthy
    #    ports:
    #      - "6060:6060"
        expose:
          - "6060"
        volumes:
          - ./data:/app/data
          - ./books:/books
          - ./bookdrop:/bookdrop
        healthcheck:
          test: wget -q -O - http://localhost:6060/api/v1/healthcheck
          interval: 60s
          retries: 5
          start_period: 60s
          timeout: 10s
        restart: unless-stopped
        networks:
          - proxy
          - grimmory_stack
    
      mariadb:
        image: lscr.io/linuxserver/mariadb:11.4.5
        environment:
          - PUID=${DB_USER_ID}
          - PGID=${DB_GROUP_ID}
          - TZ=${TZ}
          - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
          - MYSQL_DATABASE=${MYSQL_DATABASE}
          - MYSQL_USER=${DB_USER}
          - MYSQL_PASSWORD=${DB_PASSWORD}
        volumes:
          - ./mariadb/config:/config
        restart: unless-stopped
        healthcheck:
          test: ["CMD", "mariadb-admin", "ping", "-h", "localhost"]
          interval: 5s
          timeout: 5s
          retries: 10
        networks:
          - grimmory_stack
    
    networks:
      grimmory_stack:
        name: grimmory_stack
        internal: true
    
      proxy:
    	external: true

I have played with the docker network drivers some what. I know i need the proxy network to be a bridge and externally accessible on ports 80 and 443 to intercept web traffic. Ideally I would like the grimmory_stack and grimmory service to be an internal network, though my reading suggests the grimmory service needs to be on the same network as the NPM service, so both are in the proxy network.

In NPM I have tried a few different destinations, such as

  • The IP of the grimmory container in the docker network
  • The name of the container (set to grimmory in the docker compose file)
  • grimmory.network
  • localhost:6060

None of the above connect to the service, though I often get a 504 error which suggests the traffic is reaching my server, but not getting forwarded to the correct destination.

In the docker compose file for grimmory, I have tried a few different network settings but to no avail. In the Grimmory docker-compose.yml I have exposed port 6060 hoping the would open the port on the container and not the docker host, but it appears to not have worked either.

I would be very grateful if anyone can point out where I have gone wrong in my understanding, or point me to some reliable resources, ideally aimed at 5 year olds, with lots of colourful diagrams, and maybe jingly keys as well.

reddit.com
u/Witty_Cultist — 13 days ago
▲ 10 r/docker

Any help appreciated!

I am very new to home labs and i've been running a satisfactory server on docker for the last month or so. Tonight I asked Gordon to up the tick rate of the server and it subsequently deleted the container and created a new one. I don't think there were any auto saves of the world since I uploaded it to the server so I've lost about 100 hours in progress between my friend and I. Is there anything I can do or is it gone?

reddit.com
u/Grand_Insect9181 — 11 days ago
▲ 122 r/docker+8 crossposts

Portabase 1.14: Open source database backup/restore tool

Hello all!

I’m one of the maintainers of Portabase, I share about it one month ago (https://www.reddit.com/r/foss/comments/1sd4roo/portabase\_v111\_open\_source\_db\_backuprestore\_tool/) and I have some updates!

Repository: https://github.com/Portabase/portabase

Database homogenous migration is now built-in!

Previously, migrating meant:

  • Download backup from the source DB
  • Upload & restore it into the target DB

Now: no download, no upload, everything happens directly through the GUI.

It works with all supported databases, and migrations can be done within the same organization.

We also added support for Microsoft SQL Server! It still needs broader community testing to help identify bugs or edge cases we may have missed.

Quick recap : Portabase is an open-source platform for database backup and restore.

We now support 9 databases:

  • PostgreSQL
  • MariaDB and MySQL
  • SQLite
  • MongoDB
  • Redis and Valkey
  • Firebird SQL
  • Microsoft SQL Server

If you’re using Microsoft SQL Server (or any other supported database), we’d really appreciate your feedback. Feel free to open issues if you find any bugs.

u/Dense_Marionberry741 — 14 days ago